Hibernate對象的狀態
阿新 • • 發佈:2018-03-12
五步 int 數據 發生 曾經 get() .com style ransac
一個測試hibernate對象保存的實例:
@Test public void testSavePerson(){ Session session = sessionFactory.openSession(); Transaction transaction = session.beginTransaction(); Person person = new Person(); person.setPname("小麗"); person.setPsex("女");/** * 參數必須持久化對象 */ session.save(person); transaction.commit(); session.close(); }
1.Person person = new Person(); //在內存中創建一個person對象
2.person.setPname("小麗"); //給person對象賦值
3.person.setPsex("女"); //給person對象賦值
4.session.save(person); //將person移動到hibernatequy區域、
5.transaction.commit(); //發送sql語句,提交事件,發生完第五步後,person存入到數據庫中
6.session.close(); //關閉數據庫和hibernate的鏈路
1、2、3步的對象為臨時對象,經過session。save()person對象變為持久化狀態的對象,4、5是持久化狀態(托管狀態對象)。6是脫管狀態對象
臨時狀態對象和脫管狀態對象的區別:
兩個本質一樣,但是脫管狀態對象曾經與數據庫交互過。只有處於持久化狀態時hibernate才管。
session.save()、session.update()、session.get()可以把一個臨時狀態的對象轉換成一個持久化狀態對象。
session.clear()將session中的對象從session中清空。從持久化狀態轉為脫管狀態。
session.evict(person)把某一個對象從session中清空
一個對象是否是持久化對象是針對某一個session而言的。
Hibernate對象的狀態