Hibernate運行過程

掃盲:-----------------------------------------------------------------------------------
1.什麼是對象持久化?
持久化的主要應用是將內存中的對象存儲在關係型的數據庫中,當然也可以存儲在磁盤文件中、XML數據文件中。
-------------------------------------------------------------------------------------------

什麼是Hibernate?
Hibernate,冬眠。對對象來說就是持久化。

Hibeinate的運行過程:


圖1-1

Hibernate的運行過程:
1.應用程序先調用Configuration類,該類讀取Hibernate的配置文件及映射文件中的信息,並用這些信息生成一個SessionFactory對象。
2.然後從SessionFactory對象生成一個Session對象,並用Session對象生成Transaction對象。可通過Session對象的get(),load(),save()等操作PO;
3.如果沒有異常,Transactiion對象將提交這些操作結果到數據庫。

代碼:
public static void main(String[] args) {
		//代表了配置文件
		Configuration cfg = new Configuration().configure();
		//創建SessionFactory
		//SessionFactory factory = cfg.buildSessionFactory();
				
		//通過Session工廠獲取session對象,session對象封裝了數據庫的JDBC連接
		Session session = factory.openSession();
		
		User user = new User();
		user.setUsername("張三");
		user.setPassword("123456");
		
		Transaction tx = null;
		//通過session開啓一個事務
		try {
			tx = session.beginTransaction();
			
			//將user對象的數據保存到數據庫,返回值就是主鍵
			Serializable userId = session.save(user);
			System.out.println("userId = " + userId);
			
			tx.commit();//提交事務
		} catch (Exception e) {
			e.printStackTrace();
			tx.rollback();//事務回滾
		} finally {
			session.close();//關閉session
			factory.close();//關閉factory
		}
	}
	
}

其中生成SessionFactory有兩種方法:
方法一:
//代表了配置文件
Configuration cfg = new Configuration().configure();
//創建SessionFactory
//SessionFactory factory = cfg.buildSessionFactory();

方法二:
//代表了配置文件
Configuration cfg = new Configuration().configure();
//將配置信息註冊爲一個服務
ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(cfg.getProperties()).buildServiceRegistry();
SessionFactory factory = cfg.buildSessionFactory(serviceRegistry);

從圖1-1可以看出Hibernate的核心組件:
a)Configuration類:用來讀取Hiberate配置文件,並生成SessionFactory對象。
b)SessionFactory接口:產生Session實例。
c)Session接口:用來操作PO(持久化對象,Persistent Object)。它有get(),load(),save(),update()和delete()等方法用來對PO進行加載,保存,更新及刪除等操作。它是Hibernate的核心接口。
d)Query接口:用來對PO進行查詢操作,它可以從Session的createQuery()方法生成。
e)Transaction接口:用來管理Hibernate事務,它主要方法有commit()和rollback(),可以從Session的beginTransaction()方法生成。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章