`
zyc1006
  • 浏览: 133872 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

引用 HibernateDaoSupport和 HibernateTemplate的选择问题

阅读更多


hibernateTemplate的常用方法:

? void delete(Object entity):删除指定持久化实例

? deleteAll(Collection entities):删除集合内全部持久化类实例

? find(String queryString):根据HQL查询字符串来返回实例集合

? findByNamedQuery(String queryName):根据命名查询返回实例集合

? get(Class entityClass, Serializable id):根据主键加载特定持久化类的实例

? save(Object entity):保存新的实例

? saveOrUpdate(Object entity):根据实例状态,选择保存或者更新

? update(Object entity):更新实例的状态,要求entity是持久状态

? setMaxResults(int maxResults):设置分页的大小

 

HibernateDaoSupport: 

SpringHibernateDAO提供工具类:HibernateDaoASupport。该类主要提供如下两个方法,方便DAO的实现:

1、public final HibernateTemplate getHibernateTemplate()

2、public final void setSessionFactory(SessionFactory sessionFactory)

其中setSessionFactory方法用来接收SpringApplicationContext的依赖注入,可接收配置在SpringSessionFactory实例,getHibernateTemplate方法则用来更具获得的SessionFactory产生Session,最后生成HibernateTeplate来完成数据库访问。

HibernateTemplate 用于持久层的访问,该模板无需打开session及关闭Session。它只要获得SessionFactory的引用,就可以打开Session,并在持久化访问结束后关闭Session,程序开发只需要完成持久曾逻辑,通用的CRUD操作由HibernateTemplate完成.

其实Spring+hibernate访问数据库有以下几种方法:

1 注入SessionFactory

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

:

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

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

</bean>

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

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

3 注入jdbcTemplate

这种方法适合那些不喜欢hibernatesave,delete等方法,喜欢自己写的N人吧。有时候jdbcTemplate查询的效率会很高。这可能是跟jdbc有关吧。

配置如下:

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

在类中set方法jdbctemplate方法就可以了,spring中的配置跟sessionFactory基本一样。

总的感觉还是喜欢HibernateTemplate,原因就是好用,不需要写太多的sql语句,不需要

类去继承,只要提供一个set方法,再注入一下很方便。应该还有很多的地方不同,欢迎大家讨论。

分享到:
评论

相关推荐

    HibernateDaoSupport 与@Autowired

    通过继承`HibernateDaoSupport`,开发者可以轻松地获得SessionFactory的引用,而无需手动管理Session和Transaction。`HibernateDaoSupport`的核心方法包括: 1. `setSessionFactory(SessionFactory sessionFactory)...

    hibernateDaoSupport类的运用实例

    4. **查询执行**:提供了一系列基于`HibernateTemplate`的方法来执行HQL和Native SQL查询。 #### 三、具体实现步骤 ##### 1. 类继承与配置 在本例中,我们创建了一个名为`SshDAO`的类,该类继承自`...

    HibernateDaoSupport.docx

    【HibernateDaoSupport】是Spring框架中的一个抽象类,主要用于简化Hibernate的数据访问操作,它为DAO层提供了方便的事务管理和Session管理。这个类是Spring与Hibernate集成的重要组件,尤其对于初学者来说,理解其...

    第24次课-1 Spring与Hibernate的整合

    Spring提供了org.springframework.orm.hibernate3.HibernateTemplate类和org.springframework.orm.hibernate3.HibernateCallback接口来方便和Hibernate整合。 HibernateTemplate类封装了Hibernate的主要类,它提供了...

    Spring+Hibernate整合

    Spring提供了DAO(Data Access Object)支持,其中包括HibernateDAOSupport和HibernateTemplate两个类,用于简化Hibernate的使用。其中,HibernateDAOSupport类提供了SessionFactory的访问,而HibernateTemplate则是...

    strutsspringhibernate整合

    - **DAO层集成**:Spring的HibernateDaoSupport或HibernateTemplate类可以帮助简化DAO层的代码,减少对SessionFactory的直接引用。 - **数据源配置**:在Spring中配置数据源,如DataSource,与Hibernate整合时,该...

    Spring和Hibernate的整合

    接下来,我们可以通过Spring的`HibernateTemplate`或`HibernateDaoSupport`来简化DAO层的编写,或者利用Spring Data JPA的Repository接口进行进一步抽象。例如,使用`HibernateTemplate`: ```java public class ...

    整合ssh框架时常遇到的错误

    - 检查`applicationContext.xml`配置文件,确保`sessionFactory`和`hibernateTemplate`已被正确定义和引用。 - 避免不必要的继承自`HibernateDaoSupport`或`HibernateTemplate`,仅在DAO实现类等特定场景下使用这些...

    Flex+spring+hibernate整合视频学习交流part_2

    - **Spring管理Hibernate**:使用Spring的Hibernate支持,可以简化DAO层的编写,如通过`HibernateTemplate`或`HibernateDaoSupport`进行数据库操作。 - **事务管理**:Spring提供的声明式事务管理允许在服务层进行...

    JSF+Spring+Hibernate整合应用

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

    HIBERNATE4开发文档,HIBERNATE4的变化

    - 解决方案:更新sessionFactory和transactionManager的bean定义,使用`LocalSessionFactoryBean`和`HibernateTransactionManager`,并引用正确的数据源。 - 错误2:`java.lang.NoSuchMethodError: org.hibernate...

    spring2.5.jar

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

    spring_aop麻雀

    在`applicationContext-beans.xml`中,通常会配置Hibernate的SessionFactory和DataSource,以及HibernateTemplate或HibernateDaoSupport等工具类,以便于在Spring管理的Bean中无缝地使用Hibernate进行数据库操作。...

    spring3.x的读书笔记-5

    此外,Spring还为其他持久化技术如Hibernate提供了类似的模板类`HibernateTemplate`,以及对应的DAO支持类,如`JdbcDaoSupport`和`HibernateDaoSupport`,这些支持类负责初始化模板对象并提供数据资源。 在数据源...

    S2SH整合是需要的jar文件struts2.2+spring3+hibernate3.6.rar

    通过HibernateTemplate或HibernateDaoSupport,开发者可以方便地在Spring应用中使用Hibernate。 5. **jar文件**:压缩包中的jar文件包含了这些框架的核心库,如struts2-core.jar、spring-context.jar、hibernate-...

    SpringHibernateIntegration:Spring Hibernate集成

    HibernateDaoSupport是Spring为Hibernate提供的一个抽象基类,包含对HibernateTemplate的引用,可以帮助DAO层更容易地集成Hibernate。 5. **Spring的ApplicationContext**:在Spring应用中,ApplicationContext是...

    SSH整合学习笔记之spring与hibernate整合(二)之c3p0

    最后,为了在业务逻辑中使用Hibernate,我们可以创建一个DAO层,通过Spring的`HibernateTemplate`或`HibernateDaoSupport`抽象类来简化操作。例如: ```java @Service public class MyEntityDaoImpl implements ...

    ssh(structs,spring,hibernate)框架中的上传下载

     TfileDAOHibernate通过扩展Spring提供的Hibernate支持类HibernateDaoSupport而建立,HibernateDaoSupport封装了HibernateTemplate,而HibernateTemplate封装了Hibernate所提供几乎所有的的数据操作方法,如execute...

    Spring系列面试题129道(附答案解析)

    - 使用Spring的HibernateTemplate和HibernateDaoSupport类。 - 使用LocalSessionFactoryBean来配置SessionFactory。 - 使用@Transaction注解进行声明式事务管理。 36、列举spring支持的事务管理类型。 Spring支持的...

Global site tag (gtag.js) - Google Analytics