【发布时间】:2015-09-18 20:18:32
【问题描述】:
我了解到,当 Hibernate 为您提供查询结果时,它不会返回您的实际实体类的实例,而是返回一个从您的实际实体类动态子类化的“代理”实例。我理解这种行为的原因,因为它允许实现延迟初始化。但是,关于这些代理类的实现细节,我还有几个问题没有得到解答:
只有在我使用 getter 时才会加载延迟获取的字段吗?如果我在我的
equals或hashCode方法中使用该字段怎么办?当我之前没有调用该字段的getter时,这些方法的执行是否会导致NullPointerException?当字段初始化被触发时,Hibernate 究竟是如何初始化字段的?它是执行我在实体类中定义的字段的 setter 方法,还是会通过反射或类似的方式将值直接分配给变量?
【问题讨论】:
标签: hibernate proxy fetch lazy-evaluation