6.7. 延迟加载与 Session 关闭的矛盾是如何处理的
延迟加载就是并不是在访问对象的时候就把数据加载进来,而是等到真正使用时再加载。Hibernate 使用了动态代理机制实现延迟加载,我们使用 Session 的 load()方法加载数据或者从对象关系中获取关联的对象或者对象集合的时候得到的都是代理对象(one2one 除外)。
但是就算是延迟加载数据,在真正加载数据的时候,需要使用创建延迟加载对象的那个 session 去数据库中获取数据,所以,延迟加载有一个要求,就是在延迟加载对象实例化之前,延迟加载对象绑定的 session 是不能关闭的。所以这造成了我们在 javaweb 开发中非常经典的一个模式,就是 opensessioninview 模式,我们会延迟 session 的关闭时间。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论