1. 程式人生 > >Hibernate學習--Session生命週期的不同狀態

Hibernate學習--Session生命週期的不同狀態

前言

總結一下Session的不同狀態。

Session的生命週期不同狀態

三種狀態

Hibernate生命週期中java物件的三種狀態:

1、臨時狀態(transient):用new語句建立,還沒有被持久化,不處於Session的快取中;
2、持久化狀態(persistent):已使用save()或者saveOrUpdate()方法,處於Session的快取中和資料庫表中,生成了自己的Oid標識;
3、遊離狀態(detached):被持久化,已使用evict(Object),session.close()或者使用clear()清除快取,不再處於Session的快取中或不存在資料庫表中,但是依然是存在自己的OId標識。

三種狀態的轉化圖解

session

程式碼設計

1.建立session,開始事務

@Before
    public void init() {
        System.out.println("start!");
        // 建立配置物件
        Configuration config = new Configuration().configure();
        // 建立SessionFactory
        SessionFactory factory = config.buildSessionFactory();
        // 順序1--開啟會話
session = factory.openSession(); // 順序2--開啟事務 session.beginTransaction(); }

2.save( )

@Test
    public void testSavePerson2() {
        // 生成person物件
        Person person = new Person(14, "gaohan", "222", "girl", "qq.com");
        // 儲存物件
        session.save(person);
        session.update(person);
    }

3.提交事務,關閉session

@After
    public void destory() {
        System.out.println("end!");
        // 順序3--(關閉)提交事務
        session.getTransaction().commit();
        // 順序4--關閉會話
        session.close();

    }

Session持久化過程

圖解

jiuhua

參考資料