spring的HibernateDaoSupport以及HibernateTemplate和jdbcTemplate的选择问题

来源:互联网 发布:linux设置待机时间 编辑:程序博客网 时间:2024/05/22 04:39

spring提供访问数据库的有三种方式: HibernateDaoSupport,HibernateTemplate(推荐使用),jdbcTemplate

第一种方式HibernateDaoSupport 这种方式是spring为hibernate提供的dao工具类HibernateDaoSupport主要实现了

public final void setSessionFactory(SessionFactory sessionFactory)

public final SessionFactory getSessionFactory()

public final void setHibernateTemplate(HibernateTemplate hibernateTemplate)

public final HibernateTemplate getHibernateTemplate()

从它类里的方法可以知道,在使用的时候只需要将sessionFactory注入给HibernateDaoSupport,然后就可以通过getHibernateTemplate

来获得HibernateTemplate,这样就可以使用HibernateTemplate了,就和上面使用HibernateTemplate的一样的

(显然这有点绕了一点弯,个人感觉还是直接使用HibernateTemplate就可以了,不过根据个人喜好或项目的需求而定)

1、注入SessionFactory

在spring配置文件中,对Dao注入sessionFactory.比较简单。

如:

<beanid="UserInfoDao"class="com.hr2job.dao.impl.UserInfoDaoImpl">

         <propertyname="sessionFactory"ref="sessionFactory"></property>

</bean>

这里的sessionFacotry注入不是给类的,而是给继承HibernateDaoSupport类的sessionFactory,在上面源码中可以看到。以前写SSH程序的时候就是用这个的,因为是不知道,这个好处就是我们不再需要关心关闭、是否连接成功等问题。主要是很方便。但是这个不好就是java只支持单继承,所以唯一的继承给了HibernateDaoSupport有点可惜。而且也没有必要这样做。

第二种方式hibernateTemplate

2、注入HibernateTemplate

这种方法本质上跟上面的sessionFacotry一样,只不过进行了一层包装,好处就是Dao中的类就不用再继承那个HibernateDaoSuport了,不过要先配置好HibernateTemplate:

<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
        <property name="sessionFactory">
            <ref bean="sessionFactory"/>
        </property>
   </bean>

非常的方便,我现在就在用这个了。其实并没有改多少,就是曾经的sessionFactroy改成了hibernatemplate。

在程序中直接用就可以了,如下

@Component("u")
public class UserDaoImpl_HibernateTemplate implements UserDao {
 private HibernateTemplate  hibernateTemplate;
 
 @Resource
 public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
  this.hibernateTemplate = hibernateTemplate;
 }
 

 public void save(User user) {
  hibernateTemplate.save(user);
 }

}

第三种方式jdbcTemplate

转载:http://it.oyksoft.com/post/234/

0 0