Hibernate中会话get和load的区别
get()方法会立即查询(缓存中有则不查询),load()懒加载,直到你需要用到数据的时候才去查数据库
找不到对象时get()是返回NULL,load()会抛异常;
因此使用load()方法时,要确认查询的主键ID是一定存在的。
load()方法的延时加载也可以在mapping文件里配置
<class name="User" table="user" lazy="false">
lzay默认为true,改为false则为非懒加载。
对象生命周期:
Hibernate中对象有三种状态:临时状态(Transient),持久状态(Persistent),游离状态(Detached)。
保存:保存,此时Java对象已经与数据库记录建立的关系。将对象从临时状态变为持久化状态或者将游离状态的数据变为持久状态。
saveOrUpdate:保存或者更新,如果没有与数据库记录所对应的oid,则执行保存,如果有,则执行更新。将对象从临时状态变为持久化状态或者将游离状态的数据变为持久状态。
delete:删除对象,将对象从持久化状态或者游离状态变为临时状态。
close:关闭session,先将session清空,然后再关闭。将对象从持久状态变为游离状态。
clear:清空session缓存。将对象从持久状态变为游离状态。
evict:清除指定的对象。将对象从持久状态变为游离状态。