java - 了解如何在 hibernate 中的急切(非惰性)加载中获取对象

标签 java hibernate orm lazy-loading

考虑我有两个类如下:

class Employee{

  private int empid;
  private string empName;
  //other attributes
  private DepartMent dept;  //note this

}


class Dept{
  private int deptId;
  private String deptName;
  List<Employee>  employees;  //

}

如果我对 2 个用户进行急切提取,现在使用 hibernate 或任何 orm,这两个用户都属于同一部门(通过急切提取,我的意思是当我提取 Emplyee 时,我提取员工所属部门的部门详细信息) 1)首先是用户1(部门1) 2)然后对于用户2(dept2)

现在,由于每个员工 user1 和 user2 都被急切地获取,员工的部门详细信息将被获取 2 次,因此占用内存的 2 倍(对于部门详细信息)

是这种情况还是两个用户都引用了内存中的同一个部门对象? 内存中dept1上会不会有两个实例?一个给dept1,一个给dept 2?

最佳答案

如果 Employee 行 emp1 和 emp2 都指向数据库中的同一个 Department 行,您将在内存中拥有每一行的单一表示,即“Employee”类的 2 个实例,都指向“部门”类。 对于 session /上下文中的对象,无论它们是延迟加载还是急切加载,都是如此。

如果您使用单独的上下文,它将在内存中维护它自己的一组对象。

关于java - 了解如何在 hibernate 中的急切(非惰性)加载中获取对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9962060/

相关文章:

javascript - Node-webkit 与 orm

java - XSL 转换,然后在结果节点上进行 XPath 表达式

java - Hibernate 标准 aPI 多选

php - Zend Framework 2 Doctrine 2 CLI 从 YAML 每个模块生成实体

java - 从 5.2 升级到 Hibernate 5.3 后,Ear 部署因空模块而失败,我正在使用 wweblogic 12c 12.1.3

hibernate - org.hibernate.QueryException - 无法解析属性

python - Django:将 "same parent"约束应用于映射到自身的 ManyToManyField

java - 在 IE 中启用 pdf 缓存

java - 使用动态字段反序列化嵌套 XML

java - 子类型在用法上与子类有何不同?