`

HibernateTemplate和HibernateDaoSupport

 
阅读更多

Spring整合Hibernate后,为HibernateDAO提供了两个工具类:HibernateTemplate和HibernateDaoSupport

HibernateTemplate
HibernateTemplate是Spring提供的一个就Hibernate访问持久层技术而言、支持Dao组件的一个工具。HibernateTemplate提供持久层访问模板,应用HibernateTemplate无须实现特定的接口,它只需要提供一个sessionFactory的引用就可以执行持久化操作。
该模板无需打开session及关闭Session。它只要获得SessionFactory的引用,就可以打开Session,并在持久化访问结束后关闭Session,程序开发只需要完成持久层逻辑,通用的CRUD操作由HibernateTemplate完成.

HibernateDaoSupport
HibernateDaoSupport同样也是Spring提供的、为Hibernate访问数据库的DAO组件:该类主要提供如下两个方法,方便DAO的实现:
1>public final HibernateTemplate getHibernateTemplate()
2>public final void setSessionFactory(SessionFactory sessionFactory)
其中setSessionFactory方法用来接收Spring的ApplicationContext的依赖注入,可接收配置在Spring的SessionFactory实例,getHibernateTemplate方法则用来生成HibernateTeplate模板对象来完成数据库访问。
同样常用HibernateDaoSupport中的getSession方法来获取Session对象对数据库进行操作,相对HibernateTemplate对象而言,HibernateDaoSupport应用更加灵活。

 

配置方案——Spring+hibernate访问数据库有以下几种方法:

 

1>注入SessionFactory

 

在spring配置文件中,对Dao注入sessionFactory,如下所示
配置文件相关配置如下:

<bean id="manageEmpDaoImpl" 
    class="com.cyou.lms.emp.manageemp.dao.impl.ManageEmpDaoImpl">
        <property name="sessionFactory" ref="sessionFactory" />
</bean>

 Dao编码如下:

 

public class ManageEmpDaoImpl extends HibernateDaoSupport implements ManageEmpDao{
       public void addEmp(Emp emp) {
           this.getHibernateTemplate().save(emp);
       }
       public List<Emp> getEmpList() {
           return null;
       }
   }

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

在实际使用中,如果持久层继承HibernateDaoSupport的话,那么每个持久层的类,都需要注入SessionFactory,非常麻烦,

有一个便捷方法: 可以自己写一个类,继承HibernatedaoSupport,把SessionFactory或者HibernateTemplate注入到这个类中,持久层继承此类。

 

2>注入HibernateTemplate

 

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

 

<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
   <property name="sessionFactory" ref="sessionFactory" />
</bean>
<bean id="manageEmpDaoImpl" class="com.cyou.lms.emp.manageemp.dao.impl.ManageEmpDaoImpl"/>

 

DAO编码如下所示:

public class ManageEmpDaoImpl implements ManageEmpDao {
   @Resource
    private HibernateTemplate hibernateTemplate;
    public void addEmp(Emp emp) {
       this.hibernateTemplate.save(emp);
    }
    public List<Emp> getEmpList() {
       return null;
    }
}

 

3> 注入jdbcTemplate
这种配置是使用Spring对JDBC的封装,而非Hibernate。即不加载Hibernate容器,直接使用Spring对JDBC的封装来操作数据库

第一种配置:给DAO类注入数据源dataSource
配置如下:

 

<bean id="userManageImpl" class="com.nos.business.springJDBC.impl.UserManageImpl">
    <property name="dataSource" ref="dataSource" />
</bean>

 

DAO编码如下所示:

public class UserManageImpl implements IUserManage{
    private JdbcTemplate jdbcTemplate;
    
    @Resource(name="dataSource")
    public void setDataSource(DataSource dataSource){
        this.jdbcTemplate = new JdbcTemplate(dataSource);
    }

    @Override
    public void add(UserVo vo)
    {
        jdbcTemplate.update("insert into user_info(name,sex) values(?,?)", new Object[]{vo.getName(), vo.getSex()});
    }
}

 第二种配置:直接给Dao类注入JdbcTemplate
  配置如下:

<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
   <property name="dataSource" ref="dataSource" />
</bean>

 DAO编码如下所示:

public class UserManageImpl2 implements IUserManage{
    @Resource
    private JdbcTemplate jdbcTemplate;

    @Override
    public void add(UserVo vo)
    {
        jdbcTemplate.update("insert into user_info(name,sex) values(?,?)", new Object[]{vo.getName(), vo.getSex()});
    }
}

 

 

分享到:
评论

相关推荐

    hibernateTemplate和HibernateDaoSupport

    hibernateTemplate 和 HibernateDaoSupport 是 Spring 框架中针对 Hibernate 数据库访问层的两个重要组件,它们简化了基于 Hibernate 的数据操作,使得开发者能够更高效地进行 CRUD(创建、读取、更新、删除)操作。...

    Spring+Hibernate实现增删改查的两种方法

    本文将深入探讨如何利用Spring与Hibernate整合,通过两种不同的方式来实现这些基本操作:HibernateTemplate和HibernateDaoSupport。 **一、HibernateTemplate** HibernateTemplate是Spring提供的一个方便的类,它...

    跟我学Spring3(8.2)对ORM的支持之集成Hibe

    1. **HibernateTemplate和HibernateDaoSupport**:Spring提供了一组Hibernate相关的工具类,如HibernateTemplate和HibernateDaoSupport,它们简化了Hibernate的使用。HibernateTemplate是一个模板类,它封装了许多...

    Spring,Hibernate整合源码

    4. **HibernateTemplate与HibernateDaoSupport**:Spring提供了HibernateTemplate和HibernateDaoSupport,它们为DAO层提供了便捷的操作方法,如save、update、delete、find等,同时处理了事务和异常。 5. **JPA集成...

    Spring3整合Hibernate4测试Demo

    4. **Spring的HibernateTemplate或HibernateDaoSupport**:Spring提供了HibernateTemplate和HibernateDaoSupport类,用于简化Hibernate操作。在这个Demo中,可能会使用它们来封装数据访问操作。 5. **Entity(实体...

    Spring相关测试4

    在“Spring相关测试4”中,我们将重点探讨Spring框架如何与Hibernate ORM工具进行整合,特别是在使用HibernateTemplate和HibernateDaoSupport这两个关键组件时的不同版本测试。这将帮助我们了解如何在不同版本的...

    spring整合hibernate的jar包

    5. **HibernateTemplate和HibernateDaoSupport**:Spring提供了`HibernateTemplate`和`HibernateDaoSupport`这两个工具类,简化了Hibernate的操作。HibernateTemplate提供了一种线程安全的方式来执行HQL和QBC查询,...

    spring java

    `spring_integration_hibernate3_hibernateDaoSupport`和`spring_integration_hibernate3_basic`两个文件,展示了如何利用Spring的HibernateTemplate和HibernateDaoSupport类进行数据操作。这些类提供了一套简化...

    跟我学Spring3(8.1)对ORM的支持之概述Java

    Spring的HibernateTemplate和HibernateDaoSupport类为开发者提供了方便的DAO层实现。同时,Spring的TransactionManagement支持使得可以在一个统一的事务策略下使用Hibernate,无需关心底层事务的管理。 2. JPA...

    pring对JDBC和orm的支持共10页.pdf.zip

    例如,Spring通过HibernateTemplate和HibernateDaoSupport为Hibernate提供了便捷的抽象层,使得在Spring应用中使用Hibernate更加方便。对于MyBatis,Spring通过MapperFactoryBean和SqlSessionTemplate提供了类似的...

    spring-note spring 读书笔记

    4. **Spring与Hibernate的集成**: Spring通过HibernateTemplate和HibernateDaoSupport简化了Hibernate的使用。`spring集成hibernate配置文件.txt`可能包含了整合步骤、事务配置以及如何处理SessionFactory和Session...

    spring2.5.jar

    对于Hibernate的集成,Spring提供了HibernateTemplate和HibernateDaoSupport等抽象类,使得开发者可以方便地进行数据访问操作,而无需直接与SessionFactory或Session打交道。Spring的事务管理与Hibernate的事务边界...

    整合struts+hibernate+spring应用开发详解 part3

    2. **Spring与Hibernate集成**:Spring提供了HibernateTemplate和HibernateDaoSupport等工具类,简化了对Hibernate的操作。这部分可能详细介绍了如何通过Spring管理SessionFactory,如何在Service层使用...

    JSF+Spring+Hibernate整合应用

    Spring提供了HibernateTemplate和HibernateDaoSupport等类,简化了对Hibernate的操作,同时提供了声明式事务管理,使得事务处理更加透明。此外,Spring还可以管理数据源和连接池,进一步优化数据库访问性能。 **...

    Spring整合HIbernate

    3. **DAO(Data Access Object)抽象**:Spring的HibernateTemplate和HibernateDaoSupport为编写DAO层代码提供了便利,简化了与Hibernate Session的交互。 4. **基于注解的配置**:Spring 3.0及以上版本支持基于...

    Struts Hibernate Spring 集成开发宝典 tutorial

    2. **整合Hibernate和Spring**:Spring提供了HibernateTemplate和HibernateDaoSupport,用于简化Hibernate的使用。通过Spring的事务管理,可以在方法级别控制事务的开始、提交、回滚,避免了手动管理事务的复杂性。 ...

    Spring 3.2.4

    在这个版本中,Spring提供了更强大的HibernateTemplate和HibernateDaoSupport,帮助开发者更好地管理事务和执行数据库操作。 在Struts2.3.15的集成中,Spring可以作为动作类的依赖注入容器,提供Action实例的生命...

    Spring资料大全

    对于ORM框架,Spring提供了一整套集成解决方案,如HibernateTemplate和HibernateDaoSupport,帮助我们无缝地使用Hibernate进行对象-关系映射。 Spring MVC是Spring框架的一个重要组成部分,用于构建Web应用程序。它...

    spring学习资料

    3. **DAO支持**:Spring的HibernateTemplate和HibernateDaoSupport类为Hibernate操作提供了便捷的抽象层,简化了DAO层的编写。 4. **异常翻译**:Spring会将Hibernate的特定异常转换为Spring的DataAccessException...

    spring-orm源码

    Spring-ORM提供了对DAO层的支持,例如HibernateDaoSupport和JpaDaoSupport类。这些类提供了方便的方法,如getHibernateTemplate()或getEntityManager(),使得开发DAO接口变得简单。源码中可以查看这些类的实现,...

Global site tag (gtag.js) - Google Analytics