1 import org.hibernate.Session; 2 import org.hibernate.SessionFactory; 3 import org.hibernate.cfg.Configuration; 4 5 public class HibernateUtils { 6 7 // 1.創建工廠對象; 8 private static SessionFactory sessionFactory; 9 10 // 2.初始化工廠對象; 11 static { 12 sessionFactory = new Configuration().configure().buildSessionFactory(); 13 } 14 15 // 3.獲得Session; 16 public static Session getSession() { 17 18 return sessionFactory.openSession(); 19 20 } 21 22 }
以上代碼獲得會話工廠類,但是會話開始之前要有一個開啟事務,所以兩者不能在一起使用,只能獲取Session之后再開啟事務;
For Example;
public class Demo1 {
@Test
public void demo1() {
// // 5.開啟事務;
Session openSession = null;
Transaction beginTransaction = null;
try {
openSession = HibernateUtils.getSession();
beginTransaction = openSession.beginTransaction();
// 6.操作數據庫;
Query createQuery = openSession.createQuery("from Admin");
System.out.println(createQuery.list());
} catch (HibernateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
// 7. 提交事務;
beginTransaction.commit();
// 8 關閉資源;
openSession.close();
}
}
}
源代碼;
1 import org.hibernate.Query; 2 import org.hibernate.SessionFactory; 3 import org.hibernate.Transaction; 4 import org.hibernate.cfg.Configuration; 5 import org.hibernate.classic.Session; 6 import org.junit.Test; 7 8 public class Demo1 { 9 10 11 @Test 12 public void demo1() { 13 14 // 1.獲取加載配置資源的對象; 15 Configuration configuration = new Configuration(); 16 // 2.加載資源配置; 17 // 當不寫路徑的時候,默認資源文件在src目錄下; 18 configuration.configure(); 19 20 // 3.創建Session會話對象; 21 SessionFactory sessionFactory = configuration.buildSessionFactory(); 22 // 4.開啟會話; 23 Session openSession = sessionFactory.openSession(); 24 // 5.開啟事務; 25 Transaction beginTransaction = openSession.beginTransaction(); 26 // 6.操作數據庫; 27 Query createQuery = openSession.createQuery("from Admin"); 28 29 System.out.println(createQuery.list().size()); 30 // 7. 提交事務; 31 beginTransaction.commit(); 32 // 8 關閉資源; 33 openSession.close(); 34 sessionFactory.close(); 35 36 } 37 38 }
