掃盲:-----------------------------------------------------------------------------------
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()方法生成。