hibernate简单入门教程(五)---------检索策略

hibernate作为一个持久化的插件具有非常丰富的特性功能。其中一个功能叫做检索策略。

检索策略意味着通过一定判断决定是否访问数据库。有时候可以有效的减少访问数据库的次数。

传统软件公司很多时候用不上。

其目的是减少内存消耗,减少数据库访问。

类检索策略:

  1,检索策略的使用方式在于load()方法调用,get,list方法属于立即检索,Sessionload()方法和Queryiterator()方法支持延迟检索策略,当被用到的时候才加载。

  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。延时查询本来就是代理模式

 

 

posted @ 2017-06-23 16:31  酒皇  阅读(313)  评论(0编辑  收藏  举报