1.
getHibernateTemplate已经封装好了一些基本的方法,可以直接去用
而getSession只是获取一个数据工厂的session,然后大部分方法都需要自己写,加hql语句,然后用query方法执行
2.
HibernateTemplate 提供非常多的常用方法来完成基本的操作,比如通常的增加、删除、修改、查询等操作,Spring 2.0更增加对命名SQL查询的支持,也增加对分页的支持。大部分情况下,使用Hibernate的常规用法,就可完成大多数DAO对象的CRUD操作。 下面是HibernateTemplate的常用方法简介:
q void delete(Object entity):删除指定持久化实例
q deleteAll(Collection entities):删除集合内全部持久化类实例
q find(String queryString):根据HQL查询字符串来返回实例集合
q findByNamedQuery(String queryName):根据命名查询返回实例集合
q get(Class entityClass, Serializable id):根据主键加载特定持久化类的实例
q save(Object entity):保存新的实例
q saveOrUpdate(Object entity):根据实例状态,选择保存或者更新
q update(Object entity):更新实例的状态,要求entity是持久状态
q setMaxResults(int maxResults):设置分页的大小
3.
使用getSession()方法你只要继承 sessionFactory,而使用getHibernateTemplate()方法必须继承HibernateDaoSupport当然包括 sessionFactory
getSession()方法是没有经过spring包装 的,spring会把最原始的session给你,在使用完之后必须自己调用相应的close方法,而且也不会对声明式事务进行相应的管理,一旦没有及时 关闭连接,就会导致数据库连接池的连接数溢出,getHibernateTemplate()方法是经过spring封装的,例如添加相应的声明式事务管 理,由spring管理相应的连接。
在实际的使用过程中发现的确getHibernateTemplate()比getSession()方法要好很多,但是有些方法在getHibernateTemplate()并没有提供,这时我们用HibernateCallback 回调的方法管理数据库.
例如如下代码:
/** * 使用 hql 语句进行操作 * @param hql HSQL 查询语句(使用回调函数访问外部变量,必须是final的) * @param offset 开始取数据的下标 * @param length 读取数据记录数 * @return List 结果集 */ public List getListForPage ( final String hql , final int offset , final int length ) { List list = getHibernateTemplate().executeFind ( new HibernateCallback ( ) { public Object doInHibernate ( Session session ) throws HibernateException, SQLException { Query query = session.createQuery ( hql ) ; query.setFirstResult ( offset ) ; query.setMaxResults ( length ) ; List list = query.list ( ) ; return list ; } }) ; return list ; }
分享到:
相关推荐
与直接使用`getSession()`方法相比,`getHibernateTemplate()`具有以下显著特点: 1. **事务管理**:`getHibernateTemplate()`是Spring封装后的接口,它支持声明式事务管理。这意味着你无需手动开启和关闭事务,...
"JSP 中调用 DAO 的 getHibernateTemplate() 时报空指针异常的解决方法" ...通过正确地使用上面的解决方法,可以解决 JSP 中调用 DAO 的 getHibernateTemplate() 时报空指针异常的错误,从而确保 SSH 框架的正常运行。
Spring框架进一步封装了Hibernate,提供了`getHibernateTemplate()`方法,使得在Spring环境中使用Hibernate变得更加便捷。本文将详细介绍`getHibernateTemplate()`的使用方法,并通过具体的代码示例帮助读者更好地...
`getHibernateTemplate()`是Spring框架与Hibernate集成时提供的一个便捷方法,它封装了对Hibernate Session的操作,使得在Service或DAO层进行数据库交互变得更加简单。 在给定的标题和描述中,提到的是`...
在 JavaEE 应用中,使用 SSH 框架进行源代码开发时,通常会涉及到对 Hibernate 的使用。Hibernate 提供了 HibernateDaoSupport 和 HibernateTemplate 两个工具类来简化数据库操作。 HibernateDaoSupport 是 Spring ...
在开发基于Java的Web应用程序时,常常会遇到整合多种技术以实现特定功能的情况。这里讨论的是如何在使用EasyUI的DataGrid组件与SSH(Struts2、Spring...理解这些知识点有助于在实际开发中更顺畅地集成EasyUI与SSH框架。
SSH(Spring、Struts、Hibernate)是Java Web开发的经典组合,这个压缩包中包含了一些关于Spring在实际使用过程中的心得和常见问题的解决方案。 首先,"spring的事务代理.txt"可能涉及到Spring的事务管理。Spring...
特别是在企业级应用中,为了实现高效的数据库操作与管理,开发者经常需要对数据进行分页查询及模糊查询。本文将详细介绍如何利用`getHibernateTemplate()`方法结合Spring框架进行分页查询和模糊查询。 #### 二、...
gethibernatetemplate的find方法,find(String queryString);find(String queryString , Object value);find(String queryString, Object[] values);findByExample(Object exampleEntity);findByExample(Object ...
SSH2(Struts2、Spring、Hibernate)是一个经典的Java Web开发框架,用于构建高效、可扩展的Web应用程序。在这个框架中,HibernateTemplate...在实际项目中,熟练掌握HibernateTemplate的使用,能够显著提高开发效率。
SSH(Struts + Spring + Hibernate)是Java Web开发中常见的三大框架集成,用于构建高效、可维护性高的企业级应用。MyEclipse作为一款强大的集成开发环境,提供了便捷的SSH整合支持。以下将详细介绍如何在MyEclipse...
在 SSH 框架中,实现分页功能是非常重要的,本文将详细介绍如何使用依赖注入的方式,分 DAO、Service、Action 层实现 SSH 分页分层。 DAO 层实现 在 DAO 层中,我们定义了一个 MemberDao 接口,用于实现数据库操作...
本项目重点在于如何通过SSH框架将图片数据存储到Oracle数据库的Blob列中。以下是实现这一功能的关键步骤和技术细节: 1. **创建数据库表**: 在Oracle数据库中,我们首先需要创建一个包含图片数据的表。例如,创建...
在实际项目中,你可以创建一个名为`FwxxDAOHibImpl`的DAO实现类,继承`HibernateDaoSupport`,并利用`getHibernateTemplate()`方法获取`HibernateTemplate`实例,进而进行数据库操作。这样,通过Spring的依赖注入,...
以上介绍了通过`getHibernateTemplate()`方法执行查询的不同方式,包括简单的HQL查询、带有参数的查询、模糊查询以及基于实例对象的查询等。这些方法在实际开发中非常实用,可以帮助开发者更灵活地处理各种查询需求...
### SSh sql/hql 分页知识点解析 #### 一、概览 在软件开发中,分页是一项常用的技术,尤其在网络应用中...同时,也需要注意避免简单复制代码而不理解其背后的原理,这样才能更好地掌握分页技术并应用于实际项目中。
在Java的Spring框架中,SSH(Struts2、Spring、Hibernate)或SSH2是一个常见的企业级应用开发架构。其中,Hibernate作为ORM...在SSH或SSH2的项目中,结合HibernateDaoSupport,可以极大地提高开发效率和代码质量。
Hibernate中load()与get()的区别 - **知识点概述**:load()与get()都是Hibernate提供的用于加载实体的方法,但它们之间存在一些重要区别。 - **详细解释**: - **load()**:尝试性加载实体,如果实体不存在则抛出...
异常处理在SSH项目中也是非常重要的,可以使用Spring的AOP特性,定义全局异常处理器,捕获并处理可能出现的异常,提供统一的错误信息反馈给用户,提高系统的健壮性。 总的来说,SSH整合技术提供了强大的企业级应用...
"DeltaSSH"可能是项目中的一个组件或模块,具体功能未知,但根据SSH框架的特性,可能涉及到了SSH框架的某一部分功能增强或者扩展,比如可能是一个定制的SSH整合包,包含了特定的优化或者附加功能。 在实际开发中,...