hibernate 延迟加载
延迟加载 延迟加载: 当hibernate从数据库中加载某个对象时,不加载关联的对象,而只是生成了代理对象。使用session中的load的方法(在没有改变lazy属性,属性值为true的情况下)获取到的也是代理对象。 立即加载: 当Hibernate从数据库中加载某个对象时,加载关联的对象,生成实际的对象。使用session中的get的方法获取到的也是实际对象。 延迟加载的好处: 延迟加载策略能避免加载应用程序不需要访问的关联对象,以提高应用程序的性能。 立即加载的缺点: Hibernate在查询某个对象时,立即查询与之关联的对象: 1、当select的语句数目太多,需要频繁的访问数据库,会影响查询的性能。 2、在应用程序只需要访问要的对象,而不需要访问与他关联的对象的场景下,加载与之关联的对象完全是多余的操作,这些多余的操作是会占内存,这就造成了内存空间的浪费。 延迟加载的原理图: Hibernate的lazy生效期: 生效期和session一样的,session关闭,lazy失效。hibernate支持lazy策略只在session打开状态下有效。如果session已经关闭了,则会抛出LazyInitalizationException异常 Hibernate lazy属性,在3.x后是默认打开的,在以前版本中默认是关闭的