hibernate简单入门教程(五)---------检索策略
hibernate作为一个持久化的插件具有非常丰富的特性功能。其中一个功能叫做检索策略。
检索策略意味着通过一定判断决定是否访问数据库。有时候可以有效的减少访问数据库的次数。
传统软件公司很多时候用不上。
其目的是减少内存消耗,减少数据库访问。
类检索策略:
1,检索策略的使用方式在于load()方法调用,get,list方法属于立即检索,Session的load()方法和Query的iterator()方法支持延迟检索策略,当被用到的时候才加载。
2,检索办法分为立即查询与延时查询两种。立即查询与延时查询两种办法。区别在于延时查询属于用到了才会查询,用在关联类上,立即查询则是全部瞬间查询出来。
3、通过<class>标签的lazy属性进行控制,如果为true就是延时加载,默认为true.
一对多多对多检索策略:
1,通过<set>属性进行控制
2, lazy增加一个强延时加载功能:extra:使用额外延迟加载,当程序第一次访问关联持久化对象的 size(), contains() 和 isEmpty() 方法时,也不会整体查询数据库,而是采取更简单的方式查询。
3,增加fetch:查询关联对象的方式。join/select (默认) / subselect。
当fetch=lazy时查询方式是左外链接方式。这时候因为查询语句只有一条所以lazy无效。
当fetch=select时查询方式正常。查询主表的时候只查询主表内容。查询方式为:select * from id=XX
fetch=subselect情况下:主表信息按照类检索策略执行,查询方式为:select * from id in ( select # from ###)
只有hql才支持fetch=subselect。
多对一、一对一检索策略
lazy:是否延迟加载,
false:不使用延迟加载
proxy:代理
no-proxy:不使用代理模式。
fetch:查询关联对象的方式。join/select (默认)
proxy:延迟加载策略一致类的加载策略默认是true。延时查询本来就是代理模式