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:
Spring为Hibernate的DAO提供工具类:HibernateDaoASupport。该类主要提供如下两个方法,方便DAO的实现:
1、public final HibernateTemplate getHibernateTemplate()
2、public final void setSessionFactory(SessionFactory
sessionFactory)
其中setSessionFactory方法用来接收Spring的ApplicationContext的依赖注入,可接收配置在Spring的SessionFactory实例,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
这种方法适合那些不喜欢hibernate的save,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`,开发者可以轻松地获得SessionFactory的引用,而无需手动管理Session和Transaction。`HibernateDaoSupport`的核心方法包括: 1. `setSessionFactory(SessionFactory sessionFactory)...
4. **查询执行**:提供了一系列基于`HibernateTemplate`的方法来执行HQL和Native SQL查询。 #### 三、具体实现步骤 ##### 1. 类继承与配置 在本例中,我们创建了一个名为`SshDAO`的类,该类继承自`...
【HibernateDaoSupport】是Spring框架中的一个抽象类,主要用于简化Hibernate的数据访问操作,它为DAO层提供了方便的事务管理和Session管理。这个类是Spring与Hibernate集成的重要组件,尤其对于初学者来说,理解其...
Spring提供了org.springframework.orm.hibernate3.HibernateTemplate类和org.springframework.orm.hibernate3.HibernateCallback接口来方便和Hibernate整合。 HibernateTemplate类封装了Hibernate的主要类,它提供了...
Spring提供了DAO(Data Access Object)支持,其中包括HibernateDAOSupport和HibernateTemplate两个类,用于简化Hibernate的使用。其中,HibernateDAOSupport类提供了SessionFactory的访问,而HibernateTemplate则是...
- **DAO层集成**:Spring的HibernateDaoSupport或HibernateTemplate类可以帮助简化DAO层的代码,减少对SessionFactory的直接引用。 - **数据源配置**:在Spring中配置数据源,如DataSource,与Hibernate整合时,该...
接下来,我们可以通过Spring的`HibernateTemplate`或`HibernateDaoSupport`来简化DAO层的编写,或者利用Spring Data JPA的Repository接口进行进一步抽象。例如,使用`HibernateTemplate`: ```java public class ...
- 检查`applicationContext.xml`配置文件,确保`sessionFactory`和`hibernateTemplate`已被正确定义和引用。 - 避免不必要的继承自`HibernateDaoSupport`或`HibernateTemplate`,仅在DAO实现类等特定场景下使用这些...
- **Spring管理Hibernate**:使用Spring的Hibernate支持,可以简化DAO层的编写,如通过`HibernateTemplate`或`HibernateDaoSupport`进行数据库操作。 - **事务管理**:Spring提供的声明式事务管理允许在服务层进行...
Spring提供了HibernateTemplate和HibernateDaoSupport等类,简化了对Hibernate的操作,同时提供了声明式事务管理,使得事务处理更加透明。此外,Spring还可以管理数据源和连接池,进一步优化数据库访问性能。 **...
- 解决方案:更新sessionFactory和transactionManager的bean定义,使用`LocalSessionFactoryBean`和`HibernateTransactionManager`,并引用正确的数据源。 - 错误2:`java.lang.NoSuchMethodError: org.hibernate...
对于Hibernate的集成,Spring提供了HibernateTemplate和HibernateDaoSupport等抽象类,使得开发者可以方便地进行数据访问操作,而无需直接与SessionFactory或Session打交道。Spring的事务管理与Hibernate的事务边界...
在`applicationContext-beans.xml`中,通常会配置Hibernate的SessionFactory和DataSource,以及HibernateTemplate或HibernateDaoSupport等工具类,以便于在Spring管理的Bean中无缝地使用Hibernate进行数据库操作。...
此外,Spring还为其他持久化技术如Hibernate提供了类似的模板类`HibernateTemplate`,以及对应的DAO支持类,如`JdbcDaoSupport`和`HibernateDaoSupport`,这些支持类负责初始化模板对象并提供数据资源。 在数据源...
通过HibernateTemplate或HibernateDaoSupport,开发者可以方便地在Spring应用中使用Hibernate。 5. **jar文件**:压缩包中的jar文件包含了这些框架的核心库,如struts2-core.jar、spring-context.jar、hibernate-...
HibernateDaoSupport是Spring为Hibernate提供的一个抽象基类,包含对HibernateTemplate的引用,可以帮助DAO层更容易地集成Hibernate。 5. **Spring的ApplicationContext**:在Spring应用中,ApplicationContext是...
最后,为了在业务逻辑中使用Hibernate,我们可以创建一个DAO层,通过Spring的`HibernateTemplate`或`HibernateDaoSupport`抽象类来简化操作。例如: ```java @Service public class MyEntityDaoImpl implements ...
TfileDAOHibernate通过扩展Spring提供的Hibernate支持类HibernateDaoSupport而建立,HibernateDaoSupport封装了HibernateTemplate,而HibernateTemplate封装了Hibernate所提供几乎所有的的数据操作方法,如execute...
- 使用Spring的HibernateTemplate和HibernateDaoSupport类。 - 使用LocalSessionFactoryBean来配置SessionFactory。 - 使用@Transaction注解进行声明式事务管理。 36、列举spring支持的事务管理类型。 Spring支持的...