Hibernate如何获取指定主键id的某对象

看到 总结得挺好 转一下
在Hibernate中,有两种方法可以通过主键Id来获得数据对象,分别是get()和load()方法。下面我们来分别进行讨论:
1 get()
Java代码
public Object get(Class entityClass,Serializable id)

public Object get(Class entityClass,Serializable id)

这个方法就是一般的利用get方法,在这里我们要说明的是,通过get()方法,首先在一级缓存中利用该Id来查找该对象,如果没有再再二级缓存中查找该对象(前提是开启了二级缓存),如果没有再从数据库中查找该对象。这里可以看出,通过get方法,并不是立即就执行SQL语句的,如果在缓存中找到了该对象,就直接可以返回了,不用执行SQL语句了。这里还要注意的是,通过get方法时,如果对象存在,则立即返回该对象,而不管该类的配置文件中的lazy属性。同时,如果对象不存在则返回null.

2 load()
load()方法也可以通过Id来获得对象。不同的是,在立即加载中,如果对象不存在,则会抛出异常,而get()方法则返回null.而对于延迟加载,get()方法直接返回获得的对象,而load()返回对象的代理,在关闭事务后,该代理中只用一个属性那就是id,当只有这个对象被访问的时候,该对象的的其它属性才被初始化。但是在没有关闭事务的条件下,各个属性都被初始化了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值