休眠ManyToOne懒惰不工作最后一堂课



我有许多对一关系。。所有的惰性初始化,但每次我查询关系的多个方面时,这都会创建另一个选择[另一个]并带来父项,我在堆栈中的另一篇文章中读到了"说对性能有好处"为VTable重写方法声明类final,但在另一篇帖子中,他们说如果我与final类有多对一关系,则会带来关系的一侧。事实上,我已经删除了类中的final修饰符,现在一切都好了。我的问题是为什么final修饰符会导致即使在所有延迟初始化的情况下,这段关系也很热切。。

final关键字阻止任何人扩展类并覆盖其任何方法。

为了实现延迟加载,hibernate用一个代理替换位于多侧的父对象的实例。第一次调用时,此代理从数据库加载父级的数据。

代理必须是Parent类的实例。但它不能是Parent类型,因为它的方法需要做其他事情:在第一次调用时执行SQL查询。因此,代理实际上是Parent的一个子类(在运行时动态生成)。作为一个子类,Parent类不能是final。

因此,在hibernate实体上必须避免final,否则代理和延迟加载将不起作用。

最新更新