zoukankan      html  css  js  c++  java
  • 在Hibernate中使用 HibernateTemplate的三种方法

    在我们的项目中,经常要从HibernateDaoSupport继承然后使用他的HibernateTemplate给我们封装好的方法。

    我们以用户模块的持久层UserDao这个类的addUser(User user)方法为例:

    第一种方法:userDao extends HibernateDaoSupport:(不推荐使用)
    我们知道继承这个类,必须给他注入一个HibernateTemplate的对象,或者是SessionFactory对象但是 HibernateDaoSupport这个类的所有的方法都是final的,无法重写他的 setSessionFactory(SessionFactory sessionFactory)方法来注入,只能使用xml的方式来生成userDao这个对象的时候,使用<property id ="xxx" ref="xxx">来注入这个对象,但是如果这样,如果我们的Dao层的类特别多,都需要在xml文件中进行配置我们的xml配置文件就会十分的 庞大 臃肿

    第二种方法:
    Java 代码
    1. public class BaseDao extends HibernateDaoSupport {  
    2.       
    3.     @Resource(name="sessionFactory")  
    4.     public void setSF(SessionFactory sessionFactory) {  
    5.         super.setSessionFactory(sessionFactory);  
    6.     }  
    7. }  
    public class BaseDao extends HibernateDaoSupport { @Resource(name="sessionFactory") public void setSF(SessionFactory sessionFactory) { super.setSessionFactory(sessionFactory); } }
    我们抽取出来一个Dao层的基类然后让这个类继承HibernateDaoSupport,然后我们自己随便写个方法参数是 SessionFactory,然后再方法上面加入@Resource注解,把SessionFactory对象,注入到这个方法中来然后再这个方法中调 用父类中也就是HibernateDaoSupport 中的setSessionFactory(SessionFactory sessionFactory)方法把sessionFactory给他注入进去。默认情况下@Resource注解是按照名称来注入的,但是这个时候我 们自己写的这个方法无法与spring配置文件中的id名称匹配起来就会按照类型进行注入了。然后我们的UserDao类继承我们的BaseDao类就可 以使用HibernateTemlate中的方法了。

    第三种方法:
    Java 代码
    1. public class BaseDao {  
    2.     private HibernateTemplate hibernateTemplate;  
    3.     @Resource  
    4.     public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {  
    5.          this.hibernateTemplate = hibernateTemplate;  
    6. }     
    7. }  
    public class BaseDao { private HibernateTemplate hibernateTemplate; @Resource public void setHibernateTemplate(HibernateTemplate hibernateTemplate) { this.hibernateTemplate = hibernateTemplate; } }

    还是抽取出一个BaseDao的类,然后我不继承HibernateDaoSupport这个类了。我在这个类中,定义一个 HibernateTemplate类型的属性,然后把这个类注入进来,UserDao等这些持久化类仍然是从这个类继承,就可以使用 HibernateTemplate中的方法了。
  • 相关阅读:
    Android-View动画
    Android-RemoteView-桌面小部件
    系统的Drawable(四)-LayerListDrawable
    Android-Drawable(三)
    系统的Drawable(二)-Selector
    系统的Drawable(一)
    Android View事件分发-从源码分析
    打游戏要存进度-备忘录模式
    Java 内部类.md
    docker 常用 命令
  • 原文地址:https://www.cnblogs.com/danghuijian/p/4400283.html
Copyright © 2011-2022 走看看