1. 程式人生 > >Hibernate對象的狀態

Hibernate對象的狀態

五步 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對象的狀態