国产探花免费观看_亚洲丰满少妇自慰呻吟_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);


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 曲周县| 辉南县| 邳州市| 惠安县| 海原县| 邵武市| 郎溪县| 兴隆县| 黄平县| 神木县| 苗栗市| 大足县| 凤冈县| 卫辉市| 南部县| 高唐县| 祁东县| 乐亭县| 南华县| 股票| 苏尼特左旗| 炎陵县| 博罗县| 泰宁县| 丰城市| 游戏| 辽宁省| 牡丹江市| 三亚市| 浦县| 武乡县| 冕宁县| 汉中市| 兴国县| 新兴县| 绥滨县| 嘉荫县| 平定县| 金湖县| 拉孜县| 启东市|