hibernate懒加载(lazy)

lazy
需要的时候,加载,不需要的时候,不加载。

类的懒加载

session.load方法是懒加载
类的延迟加载在映射文件中可以配置

集合的懒加载

默认情况
1.默认的就是延迟加载
2、当遍历集合的时候,向数据库要数据,并且输出

lazy为false
lazy为true开启懒加载
lazy为extra更进一步的懒加载

总结

延迟加载是通过控制SQL语句的发出的时间来提高效率的。

fetch抓取策略
研究发出怎么样的sql语句,加载集合

默认值select
这样的情况会导致n+1条sql,n为classes表中的记录数
subselect

场景:当把需求分析翻译过来以后,含有子查询,这个时候,用这种策略效率比较高

join
如果根据需求分析,翻译成sql 语句含有子查询,这个时候用join无效

lazy与fetch
many to one中
如果fetch为"join",lazy不论设置成什么样的值,都不起作用
如果fetch为"select",先加载classes,再加载student,而lazy决定在什么时候加载student
查询缓存

为数据缓存,不需要缓存一张表中的所有的字段,只需要一部分字段

UpdateTimeStampsCache记录了查询缓存中数据随着时间的变化,hibernate内部就是通过时间戳的方式来检查查询缓存中的数据是否发生变化

步骤
步骤1
    二级缓存的准备工作
步骤2
    开启查询查询缓存


hql语句不一样就不能利用查询缓存

你可能感兴趣的:(hibernate懒加载(lazy))