hibernate,get,find,缓存,hibernate缓存

一、Hibernate中Session的find、get、load方法的对比:

find()方法是hibernate2中的方法,在现有的hibernate3中已经不提倡使用它。现在提倡使用session.createQuery()创建一个query对象。

 example:String hql = “from xxx where xxx …”;

        List ls = session.find(hql,new Integer(x),Hibernate.INTEGER); 

     get()方法和find()方法在类级别的检索时总是会执行立即检索的,而不管我们在hibernate配置文件中是否对该类定义使用lazy(懒加载);当检索不到相关的对象时,这两种方法都会返回NULL.

    Load方法在进行类级别的检索时,如果该类在hibernate的配置文件中并没有定义检索策略(延迟检索),那么和get方法和find方法一样都是默认立即检索。但是当检索不到相关的对象时,load方法会抛出一个异常:ObjectNotException,如果在配置文件中对于该类添加了Lazy属性后,使用load方法就会变成懒加载了。程序在执行到Student stu = session.load(Student.class)时并不会发送sql语句,只有在调用stu.getName()方法时才会去发送sql语句查询。而get和find都是在执行到session.get\find()时发送SQL语句。


转载于:https://my.oschina.net/wrs/blog/625353

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值