托管状态与游离状态

 瞬时状态:是指对象被new之后尚未保存到数据库,一旦服务器停止,JVM会回收它所占的内存资源,此时对象没有与session关联.


 托管状态:在数据库中已有数据与之对应,且与session相关联。实体状态转换到托管状态的方法:
  A.调用persist(),实体从游离转变到托管,最后变成持久化状态. 
  B.调用find()或Query执行查询,实体从持久变成托管.
  C.调用refresh(),游离实体将被重新加载,变成托管状态.
  D.调用merge(),将游离实体变成托管实体.


 游离状态:数据库中有数据与之对应但不在session的管理范围,它的属性不与数据库中持久化的实体同步.  
  实体从托管变成游离的情况有:
   A.当一个事务结束,实体超过持久化上下文作用域,实体变成游离态
   B.当复制实体对象或序列化时,实体将变成游离态
   C.调用clear方法时,所有的实体将强制转化为游离态

 

 

载一个Bean,并调用这个 Bean的set方法以后(product.setDescription(xxx);),在JPA中假如有OpenInView的设置,那么系统就会同步的将修改过的值同步保存到数据库中去,假如不想让修改过的值同步保存

到数据库中去,就必须将托管状态的Bean转化为游离状态的Bean(可以用em.clear()让托管状态的实体转换为游离状态),来清除一

级缓存的数据,这样就可以避免更新数据库中的数据。
当然还有第二种解决方案:就是也可以通

过再Bean里再添加一个属性的方法来实现,这个属性没有实际意义,只是为了前

台显示调用。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值