知识大全 使用模板模式简化DAO操作Hibernate

Posted

篇首语:学乃身之宝,儒为席上珍。君看为宰相,必用读书人。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 使用模板模式简化DAO操作Hibernate相关的知识,希望对你有一定的参考价值。

使用模板模式简化DAO操作Hibernate  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  相信使用过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);  mit();  lseSession();  这里还省去了异常处理 同时使用了HibernateUtil类来简化从SessionFactory获取Session 以及关闭Session等处理     但是我们在使用Hibernate的时候不一定会使用Spring 所以我们可以模仿Spring的处理方式 做一个Hibernate的模板 使用模板模式来简化我们的开发 其主要的目的就是为了简化开发 使代码达到最大话的重用      .我们现来实现一个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);  mit();  session flush();  return result;   catch (HibernateException e)   tx rollback();  return null;   finally   HibernateSessionutil closeSession();      这里类很简单 就是使用一个实现HibernateCallBack接口的一个回掉类 在调用的时候根据具体的需求实现HibernateCallBack类      .回掉接口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);  return null;    );    看看 是不是省去了很多代码?^_^    不过这还没有达到想Spring里面那样简单 不要着急 面包会有的 呵呵 我们会达到的      .实现我们自己的HibernateSupport类     从上面的代码可以看出 我们要自己实现HibernateCallback接口 而每次我们实现的时候又重复代码了 因此我们再抽象 讲这些实现放到我们的HibernateSupport类里面去 看看我们上面的代码就知道我们实现HibernateCallback接口的目的就是为了调用session save()方法 即session的方法 代码如下     package kick hibernate;    import java io Serializable;    import net sf hibernate HibernateException;  import net sf hibernate Session;    public class HibernateSupport    public Object save(final Object object) throws HibernateException  return HibernateTemplate run(new HibernateCallBack()    public Object execute(Session session) throws HibernateException   session save(object);  return null;      );    public Object save(final Object object final Serializable id) throws HibernateException  return HibernateTemplate run(new HibernateCallBack()    public Object execute() throws HibernateException   session save(object id);  return null;      );      public Object saveOrUpdate(final Object object) throws HibernateException  return HibernateTemplate run(new HibernateCallBack()    public Object execute(Session session) throws HibernateException   session saveOrUpdate(object);  return null;      );    ……………………………………………………………………………………  ……………………………………………………………………………………  ……………………………………………………………………………………    调用一些其他的session的方法          .抽象RootDao     该类为抽象类 在实现自己的DAO类的时候继承该类 该类的有一个HibernateSupport的对象 在子类中使用getHibernateTemplate()方法就可以得到该对象 然后调用它对应的方法 实现代码如下     package kick hibernate dao;    import net sf hibernate Session;  import kick hibernate HibernateTemplateImpl;    public abstract class RootDao   private HibernateSupport temp = null;    /**  * @return Returns the temp   */  public HibernateTemplateImpl getHibernateTemplate(Session session)   return new HibernateSupport();         .使用例子     定义一个自己的DAO类 实现代码如下     public class UserDaoImpl extends RootDao implements UserDaoInterface  public void saveUser(User user) throws KickException   getHibernateTemplate() saveOrUpdate(user);    ……………………………………………………………………………………  实现其他的方法  ……………………………………………………………………………………    看到没有?红色的代码 就实现了Spring的HibernateSupport了吧?^_^ cha138/Article/program/Java/ky/201311/28277

相关参考

知识大全 《J2EE核心模式》(DAO模式)

《J2EE核心模式》(DAO模式)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  很多的JEE应

棉花优质高效简化栽培技术

一、技术思路  以增收为目的,在高产优质的前提下,通过技术改进,千方百计降低生产成本,简化操作规程,降低劳动强度。在常规高产栽培模式的基础上,推行“五改五降”,即:  (1)改早播为适时播种,降低育苗

棉花优质高效简化栽培技术

一、技术思路  以增收为目的,在高产优质的前提下,通过技术改进,千方百计降低生产成本,简化操作规程,降低劳动强度。在常规高产栽培模式的基础上,推行“五改五降”,即:  (1)改早播为适时播种,降低育苗

知识大全 设计模式-快餐简解-模板方法模式

  【模板方法模式应用场景举例】  比如在玩极品飞车这款游戏每辆车都有显示速度的仪表盘但有可能A车显示的是蓝色的仪表盘B车显示的是红色的仪表盘分析中可以发现他们都有车速度的值但显示的方式不太一样其实模

知识大全 了解Hibernate的FlushMode.NEVER模式

了解Hibernate的FlushMode.NEVER模式  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一

安装独立梁模板时应设安全操作平台,严禁操作人员()。

安装独立梁模板时应设安全操作平台,严禁操作人员()。A、站在独立梁底模上操作B、站在模板支架上操作C、站在柱模支架上操作D、站在扶梯上操作E、在底模、柱模支架上通行正确答案:ABCE

安装独立梁模板时应设安全操作平台,严禁操作人员()。

安装独立梁模板时应设安全操作平台,严禁操作人员()。A、站在独立梁底模上操作B、站在模板支架上操作C、站在柱模支架上操作D、站在扶梯上操作E、在底模、柱模支架上通行正确答案:ABCE

图案模板印制所需的工具是什么?图案模板印制的操作方法是什么?

壁纸刀(美工刀),用于裁剪图案模板。其中有一种圆珠笔形的美工刀,可以将图案剪切得更加简单细腻。图案模板印制专用刷(图案模板印制专用海绵),用于蘸颜料进行涂抹的刷子。由于笔的顶端齐平,刷子的毛较为坚硬,

知识大全 简单概括Hibernate批量操作

简单概括Hibernate批量操作  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Hiberna

知识大全 asp.net(C#)套用模板操作Excel

asp.net(C#)套用模板操作Excel  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  当需