Hibernate中session get 和load的区别,对象生命周期
Hibernate中session get 和load的区别
get和load都会去立即查找对象;
get找不到对象是返回NULL;load找不到对象会抛异常;
因此使用load()方法时,要确认查询的主键ID一定是存在的,从这一点讲它没有get方便!
对象生命周期:
Hibernate中对象有三种状态: 临时状态(Transient)、持久状态(Persistent)、游离状态(Detached)。save: 保存,此时Java对象已经与数据库记录建立的关系。将对象从临时状态变为持久化状态或者将游离状态的数据变为持久状态。
saveOrUpdate: 保存或者更新,如果没有与数据库记录所对应的oid,则执行保存,如果有,则执行更新。将对象从临时状态变为持久化状态或者将游离状态的数据变为持久状态。
delete: 删除对象,将对象从持久化状态或者游离状态变为临时状态。
close: 关闭session, 先将session清空,然后再关闭。将对象从持久状态变为游离状态。
clear: 清空session缓存。将对象从持久状态变为游离状态。
evict: 清除指定的对象。将对象从持久状态变为游离状态。