Hibernate常用API
小編:管理員 462閱讀 2022.09.14
Hibernate常用API
-
Configuration :負責加載核心配置文件
- 加載的默認名字為hibernate.cfg.xml,如果不是這個名字,那么需要指定
- SessionFactory configuration.buildSessionFactory()創建SessionFactory
-
SessionFactory : 用來創建Session(會話)
- Session openSession()獲取Session
-
Session : 數據庫連接會話,用來實現增刪改查
- save(Object)增加數據
-
get(Class
cls,arg)根據id查詢 - update(Object object)更新,一般先要根據條件獲取到其中的記錄,然后在其對象中修改
- delete(Object object)刪除
-
Transaction :負責事務控制
- session.beginTransaction()開始事務
- rollback()回滾
- commit()提交事務
- Query :執行特殊的查詢
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(); } } } }
相關推薦
- 經典筆試題-JDBC及Hibernate篇 五、JDBC 及Hibernate:(共12 題:基礎10 道,中等難度2 道)110、數據庫,比如100 用戶同時來訪,要采取什么技術解決?【基礎】 答:可采用連接池。111、什么是ORM?【基礎】 答:對象關系映射(Object—Relational Mapping,簡稱ORM)是一種為了解決面向對象…
- Hibernate Criterion 在查詢方法設計上能夠靈活的依據Criteria的特點來方便地進行查詢條件的組裝.Hibernate設計了CriteriaSpecification作為Criteria的父接口,以下提供了Criteria和DetachedCriteria.Criteria和DetachedCriteria的主要差別在于創建的形式不一樣,Criteria是在線的,所…