Hibernate實現簡單的CRUD操作和常見類(三)
阿新 • • 發佈:2018-12-14
“兩個蝴蝶飛”特別喜歡"java1234知識分享網"小峰的實用主義,所以本文及其系列文章均是採用實用主義,從專案和程式碼的角度去分析。由於本人經驗有限,嘴皮子不溜,所以學術性,概念性,底層性的知識點暫時不做介紹。文章中有錯誤之處,歡迎拍磚和指點。特別感謝"java1234知識分享網 "和"黑馬程式設計師官網",所有的資料大部分是兩者提供,為了方便書寫,故不一一指名出處,請諒解,非常抱歉。
上一章簡單介紹了Hibernate中hibernate.cfg.xml檔案和Xxx.hbm.xml檔案的詳細解釋(二),如果沒有看過,請觀看上一章
寫一個簡單的User表的CRUD操作
一 新建Hibernate工具類 HibernateUtils.java
HibernateUtils.java
package com.yjl.util; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; /** @author: 兩個蝴蝶飛 @date: 2018年10月8日 下午8:43:29 @Description SessionFactory的工具類 */ public class HibernateUtil { /** * @param configuration 配置 * @param sessionFactory session工廠 */ private static Configuration configuration; private static SessionFactory sessionFactory=null; //私有化 private HibernateUtil(){ } /* * 得到sessionFactory物件 */ public static SessionFactory getSessionFactory(){ if(sessionFactory==null){ configuration=new Configuration(); configuration.configure(); sessionFactory=configuration.buildSessionFactory(); } return sessionFactory; } /* * 得到session物件 */ public static Session getSession(){ return getSessionFactory().openSession(); } //測試一下 public static void main(String []args){ System.out.println(getSession()); } }
SessionFactory是單例項的,整個Hibernate執行專案期間只生成一個,用單例模式生成!!!. 注意這點。
二 插入的測試 save
@Test public void saveTest(){ //1 得到Session物件 Session session=HibernateUtil.getSession(); //2 開啟事務 Transaction tran=session.beginTransaction(); //3 例項化物件 User user=new User(); user.setUserName("兩個蝴蝶飛"); user.setSex("男"); user.setAge(24); user.setPassword("123456"); user.setDescription("一個有夢想的程式設計師"); //4利用save()方法進行相應的儲存 session.save(user); //5 提交事務 tran.commit(); //6 關閉session session.close(); }
執行後檢視資料庫,發現user表添加了,而且正確的插入了資料
三 簡單查詢的測試 get()
@Test
public void getTest(){
Session session=HibernateUtil.getSession();
User user=session.get(User.class,1);
System.out.println(user.getUserName()+"----"+user.getDescription());
}
四 簡單修改的測試 update()
@Test
public void updateTest(){
//1 得到Session物件
Session session=HibernateUtil.getSession();
//2 開啟事務
Transaction tran=session.beginTransaction();
//3 得到物件
User user=session.get(User.class,1);
if(user!=null){
user.setAge(26);
user.setDescription("要做一個高階程式設計師");
//4利用save()方法進行相應的儲存
session.update(user);
}
//5 提交事務
tran.commit();
//6 關閉session
session.close();
}
五 簡單刪除的測試
@Test
public void deleteTest(){
//1 得到Session物件
Session session=HibernateUtil.getSession();
//2 開啟事務
Transaction tran=session.beginTransaction();
//3 得到物件
User user=session.get(User.class,1);
//4 如果存在,就進行刪除
if(user!=null){
session.delete(user);
}
//5 提交事務
tran.commit();
//6 關閉session
session.close();
}
六 Hibernate 中Configurate 類
所用到的:
configuration=new Configuration();
configuration.configure();
sessionFactory=configuration.buildSessionFactory();
其中:
public Configuration()
{
//呼叫類載入進行建立
this(new BootstrapServiceRegistryBuilder().build());
}
public Configuration configure()
/* */ throws HibernateException
/* */ {
//名稱為hibernate.cfg.xml, 不能變,是固定值
/* 244 */ return configure("hibernate.cfg.xml");
/* */ }
七 Hibernate中的SessionFactory類
//建立sessionFactory物件
public SessionFactory buildSessionFactory()
/* */ throws HibernateException
/* */ {
/* 724 */ log.debug("Building session factory using internal StandardServiceRegistryBuilder");
/* 725 */ standardServiceRegistryBuilder.applySettings(properties);
/* 726 */ return buildSessionFactory(standardServiceRegistryBuilder.build());
/* */ }
SessionFactory中的主要方法:
八 Hibernate中的Session類
常用方法:
九 Hibernate中的Transaction類
其中EntityTransaction 類:
其中,新增save(), 更新 update(), 刪除delete() ,是需要事務操作的,不要忘記 tran.commit(); 提交事務。
查詢get() 是不需要事務操作的。
注意,不要忘記關閉Session . session.close(); 關閉。
謝謝!!!