Hibernate學習--Session生命週期的不同狀態
阿新 • • 發佈:2019-01-28
前言
總結一下Session的不同狀態。
Session的生命週期不同狀態
三種狀態
Hibernate生命週期中java物件的三種狀態:
1、臨時狀態(transient):用new語句建立,還沒有被持久化,不處於Session的快取中;
2、持久化狀態(persistent):已使用save()或者saveOrUpdate()方法,處於Session的快取中和資料庫表中,生成了自己的Oid標識;
3、遊離狀態(detached):被持久化,已使用evict(Object),session.close()或者使用clear()清除快取,不再處於Session的快取中或不存在資料庫表中,但是依然是存在自己的OId標識。
三種狀態的轉化圖解
程式碼設計
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();
}