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

时间:2016-09-02 05:17:07

标签: java 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名员工。 那么有多少查询会在此时执行到数据库以获取所有数据?

2 个答案:

答案 0 :(得分:0)

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

如果它急切的Hibernate将所有查询加入一个查询并执行一个查询。

答案 1 :(得分:0)

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

所以,如果你加载了1000名员工,那么将有1000个加载部门的电话(每个员工有1个电话)。

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