hibernate的延迟加载机制
首先说下子什么是延迟加载:
延迟加载是一种机制,主要是解决不必要的查询对资源的浪费,只有当数据真正调用时才加载,而不会对数据进行提前加载造成资源的浪费。
1,Hibernate延迟加载的看法:
延迟加载就是懒加载,使用懒加载是解决了负载问题,也就是说懒加载后不会立即去访问数据库,而是尽量延迟,延迟到用户执行数据库查询命令的时候或者使用initialize方法的时候去和数据库交互,这样就减轻了与数据库交互的压力,如果缓存中有数据的话会优先考虑缓存数据,总之是尽量避免和数据库的直接交互,但有些时候也会出现数据没有得到及时更新的错误数据,所以,在金融等方面的项目开发的时候尽量避免懒加载。比如在统计论坛数据访问量等要求不是很严格的情况并且数据量比较大的情况下可以使用懒加载。
【load】load方法会导致懒加载出现,如果要数据及时送入数据库的话,使用save方法时,load会延迟至强制访问数据库执行,比如get方法调用的时候。
【one to one映射】对于懒加载,一对一映射中的constrained属性设置为true的时候实现懒加载,lazy决定了什么时候进行懒加载,而fetch决定了抓取的方式。
【mang to one映射】对于多对一映射中,默认情况下是懒加载的,这样有利于减轻系统负载,如果要取消懒加载进行查询的话,在集合端中把lazy属性设置为false就可以。
【总结】懒加载是通过代理方式实现的,代理的对象在访问的时候才会去和数据库进行交互,前提是session没有被关掉的情况下。