Hibernate对象的状态

首先附上一张图片便于理解:

由图片可知hibernate对象有四种状态,他们分别是:

1.临时状态:未保存到数据库前的状态,临时状态若无操作则也会自动进入垃圾回收站,
2.持久化状态:session和数据库中都有
3.游离状态:数据库中有session中没
4.删除状态:数据库session都没

再此需要注意:使用的一些保存的方法,存的数据在session的缓存中,而提交数据后才是进入数据库中。而sql语句在commit()之前出现。

对象状态的转换:

临时状态->持久化状态使用的方法:

1》.save(t);

2》.persist(t);

3》.saveOrUpdate(t);

 使用save和persist(持久化)和saveOrUpdate 
      区别   save中不强制主键生成约束,赋值主键成功,由hibernate赋值
      persist中强制主键生成约束,赋值主键失败,由用户赋值,(做了一个认证主键的动作)
      saveOrUpdate  
          若主键生成策略定义为用户自定义
          则必须赋值id,    且sql语句为insert
          若主键生成策略定义为hibernate自定义
          若有id则为update  若无id则为insert
 

无->持久化状态使用的方法:

1》.get(class,string);

2》.load(class,string);

区别 :
get:即时加载,立即调用sql语句,
     若数据库没有相应的记录,返回为null,
     session关闭后,也可以使用对象
load:延迟加载,
不会调用sql语句,用的时候调用sql语句
若数据库没有相对应的记录则报错
session关闭后,出现懒加载的现象

-->懒加载(Load On Demand)是一种独特而又强大的数据获取方法,它能够在用户滚动页面的时候自动获取更多的数据,而新得到的数据不会影响原有数据的显示,同时最大程度上减少服务器端的资源耗用。
游离化状态的前提是session未关闭,无缓存可以。

持久化状态->游离化的状态使用的方法:

1》.close();

2》.clear();

3》.evict();

游离化的状态->持久化使用的方法:

1》.saveOrUpdate(t);

2》.update(t);

持久化的状态/游离化状态->删除状态使用的方法:

1》.delete(t);

此方法效果为替换,未删除数据库的对象

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值