package com.demo.dao; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import com.demo.Login; public class LoginDAO { private Session session=null; private Transaction tran=null; public LoginDAO(){ //創建Configuration對象 Configuration config = new Configuration().configure(); //創建Session工廠 SessionFactory sessionFactory = config.buildSessionFactory(); //得到Session對象 session = sessionFactory.openSession(); } public void save(Login login){ try { //開啟事務 tran=session.beginTransaction(); //將傳遞進來的login對象存入數據庫 session.save(login); //提交事務 tran.commit(); //提示信息 System.out.println("用戶信息保存成功!"); } catch (RuntimeException e) {
//捕獲並處理異常
if(null!=tran){tran.rollback;} throw e; }finally{ //關閉Session對象 session.close(); } } }
在這個類中用到了Session和Transaction對象,這里的Session對象是hibernate3.jar包中的Session對象,對數據庫的所有操作都要通過Session來完成。Transaction對象用來處理對數據庫操作的事務。
在構造方法中實例化Session對象。實例化的過程是,首先找到Hibernate配置,然后從配置中取出SessionFactory,也就是Session工廠,最后從SessionFactory中取出Session。向login表中添加數據的save()方法是將Login類型的對象login作為形參傳入方法中。在對數據庫操作的時候有可能會拋出運行時異常,所有用try-catch結構來捕獲異常。然后進行login 表的添加操作。
進行添加操作時,首先實例化Transaction對象,就是開啟事務。然后調用Session對象的save()方法,並將Login類型的對象傳入該方法。接下來就是調用事務對象的commit()方法提交到數據庫,並關閉Session對象。如果出現異常,就會將事務進行回滾。
回顧實現添加的功能,總結一下在Hibernate中執行持久化操作的步驟:
1> 讀取並解析配置文件:
Configuration config = new Configuration().configure();
2> 讀取並解析映射信息,創建SessionFactory:
SessionFactory sessionFactory = config.buildSessionFactory();
3> 打開Session:
session = sessionFactory.openSession();
4> 開啟事務(增,刪,改操作必須有,查詢操作可選):
tran = session.beginTransaction();
5> 持久化操作:
session.save(login);
6> 提交事務:
tran.commit();
7> 關閉Session:
session.close();