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.状态转换:

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

1)直接获得瞬时对象

    相关操作:new Book() 

        瞬时 ---> 持久  savesaveOrUpdate 插入操作

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


2)直接获得持久对象

    相关操作:查询操作、get/loadQueryCriteria 

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

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


3)直接获得脱管

    相关操作:无法直接获得

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

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

- end
 

你可能感兴趣的:(sql,Hibernate,jdbc,javabean,数据持久化)