国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

使用模板模式簡化DAO操作Hibernate

2019-11-17 06:05:16
字體:
來源:轉載
供稿:網友

  原文出處:http://www.javaresearch.org/article/showarticle.jsp?column=108&thread=37300

  相信使用過SPRing + Hibernate開發過的人,在寫DAO的時候都使用過Spring的HibernateDaoSupport類,然后在實現的時候就可以很輕松的使用getHibernateTemplate()方法之后就可以調用save()、delete()、update()等Hibernate的session的操作,很簡單。比如:

getHibernateTemplate().save(user);


  這樣一句話在我們沒有Spring的時候就必須使用如下的代碼才能完成:

Session session = HibernateUtil.getSession();
Transaction tx = session.beginTransaction();
session.save(user);
tx.commit();
HibernateUtil.colseSession();


  這里還省去了異常處理,同時使用了HibernateUtil類來簡化從SessionFactory獲取Session,以及關閉Session等處理。

  但是我們在使用Hibernate的時候不一定會使用Spring,所以我們可以模擬Spring的處理方式,做一個Hibernate的模板,使用模板模式來簡化我們的開發,其主要的目的就是為了簡化開發,使代碼達到最大話的重用。


  1. 我們現來實現一個Hibernate模板:

package kick.hibernate;

import net.sf.hibernate.HibernateException;
import net.sf.hibernate.Session;
import net.sf.hibernate.Transaction;

public class HibernateTemplate{

public static Object run(HibernateCallback callback) throws HibernateException{
Session session = null;
Transaction tx = null;
try {
session = HibernateSessionutil.currentSession();
tx = session.beginTransaction();
Object result = callback.execute(session);
tx.commit();
session.flush();
return result;
} catch (HibernateException e) {
tx.rollback();
return null;
} finally {
HibernateSessionutil.closeSession();
}
}


  這里類很簡單,就是使用一個實現HibernateCallBack接口的一個回掉類,在調用的時候根據具體的需求實現HibernateCallBack類。

  2. 回掉接口HibernateCallBack:

package kick.hibernate;

import net.sf.hibernate.HibernateException;
import net.sf.hibernate.Session;

public interface HibernateCallBack {
Object execute(Session session)throws HibernateException;
}


  好了,到此為止我們就可以使用這個模板了,可以用如下的方式使用:

HibernateTemplate.run(new HibernateCallback() {
public Object execute(Session session) throws HibernateException {
session.save(user);


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 独山县| 紫金县| 玉龙| 井冈山市| 永年县| 阿克苏市| 阳山县| 张家口市| 江门市| 息烽县| 潞城市| 祁连县| 黄浦区| 夏邑县| 全椒县| 襄垣县| 元江| 湟中县| 龙泉市| 河西区| 乌鲁木齐县| 宁都县| 汉中市| 白山市| 攀枝花市| 丰县| 大悟县| 蕉岭县| 桐柏县| 理塘县| 门头沟区| 西藏| 锦屏县| 兴宁市| 北辰区| 株洲市| 鹿泉市| 亳州市| 汕头市| 呼图壁县| 井冈山市|