繁体   English   中英

使用hibernate对一对多查询的数据库有多少?

[英]How many hit to database for one-to-many query using hibernate?

我在Employee和Department之间有一对多的关系,我的班级看起来像:

@Entity
public class Employee {
@Id
private int empId;
private String empName;
@OneToMany
@JoinTable (name = "relationalTable" , joinColumns = @JoinColumn(name = "empId"),inverseJoinColumns=@JoinColumn(name = "deptId"))
private Collection <Department> dept = new ArrayList<Department>();

public int getEmpId() {
    return empId;
}
public void setEmpId(int empId) {
    this.empId = empId;
}

public Collection<Department> getDept() {
    return dept;
}
public void setDept(Collection<Department> dept) {
    this.dept = dept;
}


@Column 
public String getEmpName() {
    return empName;
}
public void setEmpName(String empName) {
    this.empName = empName;
}
}

和我的系类一样:

@Entity
public class Department {
   int deptId;
   String deptName;
   private Employee emp;

   @ManyToOne
   public Employee getEmp() {
      return emp;
   }

   public void setEmp(Employee emp) {
      this.emp = emp;
   }

   @Id
   public int getDeptId() {
      return deptId;
   }

   public void setDeptId(int deptId) {
      this.deptId = deptId;
   }

   @Column
   public String getDeptName() {
      return deptName;
   }

   public void setDeptName(String deptName) {
      this.deptName = deptName;
   }
}

如果我拿到部门。 因此,它将在与其相关联的同时获取所有员工。 用部门ID 1说有1000名员工。 那么有多少查询会在此时执行到数据库以获取所有数据?

如果fetchType为Lazy Hibernate,则在您尝试访问部门时检索记录

如果其渴望的Hibernate将所有查询加入一个查询并执行一个查询。

如果尚未指定fetch类型,则默认延迟加载一对多关系。 所以你的Employee类有一个到多个部门。

因此,如果您加载1000个员工,那么将有1000个负载部门的呼叫(每个员工1个呼叫)。

我无法理解你的关系,在这个组织中,一个部门只能有一个员工,但一个员工可以在几个奇怪的部门工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM