Hibernate各類說明
Configuration:配置加載類,用於加載主配置跟orm元數據
Configuration conf = new Configuration().configure();
SessionFactory:用於創建操作數據庫的核心對象sesson對象的工廠
注意:①、SessionFactory負責保存和使用所有的配置信息,消耗內存資源非常大
②、SessionFactory屬於線程安全的設計
結論:應該保證WEB項目中只創建一個SessionFactory對象
SessionFactory sf = conf.buildSessionFactory();
Session:表達hibernate框架與數據庫之間的連接(會話),還可以完成對數據庫的增刪改查,是hibernate操作數據庫的核心對象
// ①、獲取session Session session = sf.openSession(); // ②、獲取一個與線程綁定的session對象 Session session = sf.getCurrentSession();
Transaction:操作事務的對象
// ①、獲得操作事務的Transaction對象 Transaction tx = session.getTransaction(); // ②、開啟事務並獲取操作事務的Transaction對象(推薦使用) Transaction tx2 = session.beginTransaction();
Hibernate API
類 | 方法 | 描述 |
Configuration | configure() | 讀取指定的配置文件,默認讀取src下的hibernate.cfg.xml文件 |
buildSessionFactory() | 根據配置信息創建sessionFactory對象 | |
conf.addResource(resourceName); | 骨灰級方法 hibernate 1.0時不支持XML,使用的是properties加載,需要單獨加載orm元數據跟主配置文件,現在已經不使用 | |
conf.addClass(persistentClass); | ||
SessionFactory | openSession() | 獲取session對象 |
getCurrentSession() | 獲取一個與線程綁定的session對象 | |
close() | 關閉sessionFactory,釋放資源 | |
Session | getTransaction() | 獲得操作事務的Transaction對象 |
beginTransaction() | 開啟事務並獲取操作事務的Transaction對象(推薦使用) | |
save(Object obj) | 向數據庫表中插入一條數據,參數是一個代表數據庫某張表的javabean類的對象 | |
get(Object obj, id) | 從數據庫表中獲取數據,第一個參數是代表數據庫某張表的javabean類的對象,后面是篩選條件 | |
update(Object obj) | 修改數據庫表的某條數據,參數是一個代表數據庫某張表的javabean類的對象 | |
delete(Object obj) | 刪除數據庫表的某條數據,參數是一個代表數據庫某張表的javabean類的對象 | |
close() | 關閉session,釋放資源 | |
Transaction | commit() | 提交事務 |
rollback() | 回滾事務 |
封裝HBUtils類
在編寫程序的時候,有一些代碼是重復的,那么就可以提取出來,單獨的封裝在一起,下面就對Hibernate加載配置文件,獲取生成session對象的工廠以及創建session對象進行一個單獨的封裝,使在使用的時候可以直接獲取到Session對象而不需要再做重復的操作
package com.jinxin.utils; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; /** * 本類封裝了操作hibernate的相關方法 * */ public class HBUtils { // 產生session對象的工廠 private static SessionFactory sessionFactory; // 靜態代碼塊,生成工廠,使用靜態代碼塊的原因:使整個WEB項目只有一個SessionFactory,節省資源 static { // 配置加載類,用於加載主配置跟orm元數據 Configuration conf = new Configuration(); // 讀取指定的配置文件,默認讀取src下的hibernate.cfg.xml文件 conf = conf.configure(); // 根據配置信息創建sessionFactory對象 sessionFactory = conf.buildSessionFactory(); } // 獲取session public static Session getSession() { return sessionFactory.openSession(); } }
使用Hibernate實現增刪改查
增
// 獲取session對象 Session session = HBUtils.getSession(); // 開啟事務並獲取操作事務的Transaction對象 Transaction transaction = session.beginTransaction(); // 向數據庫中插入用戶信息 Customer customer = new Customer(); // 創建實體類對象 customer.setCust_name(“Eric Jin”); session.save(customer); // 保存數據 // 提交事務 transaction.commit(); // 釋放資源 session.close();
刪
// 獲取session對象 Session session = HBUtils.getSession(); // 開啟事務並獲取操作事務的Transaction對象 Transaction transaction = session.beginTransaction(); // 刪除數據庫中一條用戶數據 Customer customer = session.get(Customer.class, 1L); // 獲取id為1的用戶信息 session.delete(customer); // 刪除該條信息 // 提交事務 transaction.commit(); // 釋放資源 session.close();
改
// 獲取session對象 Session session = HBUtils.getSession(); // 開啟事務並獲取操作事務的Transaction對象 Transaction transaction = session.beginTransaction(); // 刪除數據庫中一條用戶數據 Customer customer = session.get(Customer.class, 1L); // 獲取id為1的用戶信息 costomer.setCust_name("Eric Jin"); // 修改用戶名 session.update(customer); // 將修改后的數據更新到數據庫 // 提交事務 transaction.commit(); // 釋放資源 session.close();
查
// 獲取session對象 Session session = HBUtils.getSession(); // 開啟事務並獲取操作事務的Transaction對象 Transaction transaction = session.beginTransaction(); // 刪除數據庫中一條用戶數據 Customer customer = session.get(Customer.class, 1L); // 獲取id為1的用戶信息 // 提交事務 transaction.commit(); // 釋放資源 session.close();