Hibernate常用API

小編:管理員 462閱讀 2022.09.14

Hibernate常用API
  1. Configuration :負責加載核心配置文件
    • 加載的默認名字為hibernate.cfg.xml,如果不是這個名字,那么需要指定
    • SessionFactory configuration.buildSessionFactory()創建SessionFactory
  2. SessionFactory : 用來創建Session(會話)
    • Session openSession()獲取Session
  3. Session : 數據庫連接會話,用來實現增刪改查
    • save(Object)增加數據
    • get(Class cls,arg)根據id查詢
    • update(Object object)更新,一般先要根據條件獲取到其中的記錄,然后在其對象中修改
    • delete(Object object)刪除
  4. Transaction :負責事務控制
    • session.beginTransaction()開始事務
    • rollback()回滾
    • commit()提交事務
  5. Query :執行特殊的查詢
增刪改查的是實例(Session)創建一個工具類
public class HibernateUntil {
	private static Configuration configuration;
	private static SessionFactory sessionFactory;
	/*
	 * 靜態語句塊中的內容只是在類加載的時候只創建一次,因此這里的大大減少了資源的消耗
	 */
	static {
		// 加載核心配置文件hibernate.cfg.xml
		configuration = new Configuration();
		configuration.configure();
		// 創建SessionFactotry對象
		sessionFactory = configuration.buildSessionFactory();
	}
	//創建session對象,在測試類中可以使用這個靜態方法獲取session
	public static Session getSession() {
		return sessionFactory.openSession();
	}
}
復制增刪改查
package cn.tedu.test;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.Test;
import cn.tedu.bean.Student;
import cn.tedu.utils.HibernateUntil;
public class Demo1 {
	/**
	 * 添加數據到數據庫中
	 * save(Object object)
	 * 直接傳入的是一個實體類的對象,我們在實體類中設置值,那么設置的值就會根據映射關系文件將其添加到指定的表的字段的值
	 */
	@Test
	public void TestAdd() {
		Session session = null;
		Transaction transaction = null;
		try {
			// 創建session
			session = HibernateUntil.getSession();
			// 開始事務
			transaction = session.beginTransaction();
			Student student = new Student();
			student.setAge(22);
			student.setName("陳加兵");
			// 保存數據到數據庫
			session.save(student);
			// 提交事務
			transaction.commit();
		} catch (Exception exception) {
			transaction.rollback(); // 事務回滾
		} finally {
			if (session!=null) {
				session.close();
			}
		}
	}
	/**
	 * 刪除數據
	 * 1. 根據id查詢出想要刪除的對象
	 * 2. 使用delete(Object obj)  刪除
	 */
	@Test
	public void testDelete(){
		Session session = null;
		Transaction transaction = null;
		try {
			// 創建session
			session = HibernateUntil.getSession();
			// 開始事務
			transaction = session.beginTransaction();
			Student student=session.get(Student.class, 1); //根據id查詢想要刪除的對象
			session.delete(student);   //刪除查詢到的對象
			// 提交事務
			transaction.commit();
		} catch (Exception exception) {
			transaction.rollback(); // 事務回滾
		} finally {
			if (session!=null) {
				session.close();
			}
		}
	}
	/**
	 * 根據id查詢數據,返回的是一個實體類對象
	 * get(Class cls,id)
	 */
	@Test
	public void testGet(){
		Session session = null;
		Transaction transaction = null;
		try {
			// 創建session
			session = HibernateUntil.getSession();
			// 開始事務
			transaction = session.beginTransaction();
			//查詢id=1的數據,并且返回對象
			Student student=session.get(Student.class, 1);
			System.out.println(student);
			// 提交事務
			transaction.commit();
		} catch (Exception exception) {
			transaction.rollback(); // 事務回滾
		} finally {
			if (session!=null) {
				session.close();
			}
		}
	}
	/**
	 * 測試更新數據
	 * 1. 先根據id獲取指定的對象 get(Class class,id)
	 * 2. 使用set方法修改對象中的屬性值
	 * 3. update(Object object) 直接將對象更新即可
	 */
	@Test
	public void TestUpdate() {
		Session session = null;
		Transaction transaction = null;
		try {
			// 創建session
			session = HibernateUntil.getSession();
			// 開始事務
			transaction = session.beginTransaction();
			//查詢id=1的數據,并且返回對象
			Student student=session.get(Student.class, 1);
			student.setName("Jack");
			student.setAge(33);
			session.update(student);
			// 提交事務
			transaction.commit();
		} catch (Exception exception) {
			transaction.rollback(); // 事務回滾
		} finally {
			if (session!=null) {
				session.close();
			}
		}
	}
}
復制
關聯標簽:
亚洲国产欧美图片,亚洲aⅴ在线av,日韩亚洲综合图片视频,日本av精品在线中文