Hibernate API、Hibernate實現增刪改查


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();

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM