Hibernate上路_08-Hibernate中Bean对象3种状态

OID=Object ID。数据封装对象(JavaBean)的三个状态由 是否有OID、是否与session关联 决定。

1.状态说明:

-> 瞬时态 transient:没有持久化标识OID,未与Session关联。临时对象。 

-> 持久态 persistent:具有持久化标识OID,与Session关联(处于事务中)。有效对象。

-> 脱管态 detached:具有持久化标识OID,脱离Session关联。“无效”对象。

public void test() {
		Session session = UtilGetSession.openSession();
		Transaction transaction = session.beginTransaction();

		/** 没有OID,未与session关联。瞬时态 **/
		PojoUser user = new PojoUser();
		user.setName("Eminem");
		user.setAge(45);
		user.setCity("Detroit");
		
		/** 有OID,与session关联。持久态 **/
		session.save(user);		/** Bean的setID方法产生OID,session的save与之关联 **/
		
		transaction.commit(); 
		/** 有OID,但脱离与session关联。脱管态 **/ 
		
		session.close(); 
	}


2.状态转换:

1)直接获得瞬时对象

    相关操作:new Book() 

        瞬时 ---> 持久  save、saveOrUpdate 插入操作

        瞬时 ---> 脱管  book.setId(1);设置OID 


2)直接获得持久对象

    相关操作:查询操作、get/load、Query、Criteria 

        持久 ---> 瞬时  delete 删除操作(删除对象后,OID无效)

        持久 ---> 脱管  提交事务/关闭Session、session.clear()、session.evict(obj)


3)直接获得脱管

    相关操作:无法直接获得

        脱管 ---> 瞬时 book.setId(null);移除对象OID 

        脱管 ---> 持久 update 更新操作 

- end
 

转载于:https://my.oschina.net/vigiles/blog/175735

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值