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

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

 

 

转载于:https://www.cnblogs.com/blackdeng/p/7070610.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值