使用 HibernateCallback 的理由 , 在项目开发中,使用了框架集成,Spring,Hibernate。。。 在开发中多处用到了Session,在对Session的使用维护上,有几种看法。
1.getCurrentSession();
获得当前会话中的session,该session有容器自行维护管理,Spring可以代理事务。
2.this.getSession();
从当前的执行中获得或创建一个hibernate的session对象,自己关闭,释放连接资源。
3.openSession();
调用函数自行创建一个数据库的连接,并将其打开,在使用Spring操作非查询语句的请况下,Spring的事务对该session对象不起到事务管理的作用,所以该session对象应当由程序员自己关闭,释放连接资源。
在项目中使用到了Spring框架技术,就是说明,我们不想直接去获取,打开Session,开始一个事务,处理异常,提交一个事务,最后关闭一个Session,使用Spring后,这样的工作对我们来讲太过于繁琐,我们自己只专注于业务,不想去作这些重复而繁琐的操作。我们把这些责任全部委托给了Spring的HibernateTemplate,然后使用声明式的配置来实现这样的功能。如果我们通过类似getSession()这样的方法获得了Session,那就意味着我们放弃了上面所说的一切好处。在Spring的框架中HibernateTemplate提供了相当多有用的辅助功能。我们想用它提供的辅助功能。
但是HibernateTemplate包装了Hibernate的代码,使用了它以后不能直接访问到Session了。
HibernateTemplate提供HibernateCallback,就是为了满足这种使用了HibernateTemplate的情况下,仍然需要直接访问Session的需求而来的。它提供了在HibernateTemplate里面直接访问Session的能力,程序员不必人为的管理session对象, 这个就是使用HibernateCallback的原因。
分享到:
相关推荐
Spring为Hibernate提供了全面的集成方案,简化了DAO(Data Access Object)的开发,同时也支持其他ORM框架,使得应用能够在不同持久化技术间灵活切换。 6.5.1 Spring提供的DAO支持 Spring通过提供一系列的DAO抽象类...
Spring为与Hibernate进行整合,提供了一个工具类HibernateDaoSupport HibernateDaoSupport提供了基于AOP事务的自动处理,程序员完全可以不用理会事务的开始与提交,它会自动完成SessionFactory的注入和事务的注入。 ...
本文详细介绍了Spring与Hibernate集成的过程,包括如何配置`SessionFactory`、使用`HibernateTemplate`简化数据操作、通过`HibernateDaoSupport`提高代码可维护性以及利用`HibernateCallback`实现更复杂的业务逻辑。...
同时,我们需要在Struts的配置文件`struts.xml`中声明Spring为Action的提供者,这样Struts就会将请求转发给Spring来处理。 接下来是Spring与Hibernate的整合。Spring提供了一种称为HibernateDaoSupport的抽象类,它...
在这个配置说明中,开发者使用的是Struts2.3、Spring3.1.2和Hibernate4.1.6的版本。 首先,我们需要了解这三大框架的基本作用: - **Struts2**:是一个基于MVC(Model-View-Controller)设计模式的Web应用框架,...
Spring中的bean有完整的生命周期,包括创建、初始化、使用和销毁等阶段。可以通过配置init-method和destroy-method来定义初始化和销毁时的方法。lazy-init属性可以配置bean是否延迟初始化。 9. Annotation: ...
-- 这里在配成spring,下边也要写一个名为spring-servlet.xml的文件,主要用来配置它的controller --> 19. *.do</url-pattern> 20. </servlet-mapping> 21. <welcome-file-list> 22. <welcome-file>index.jsp...
这里使用了`HibernateCallback`接口,它允许在回调方法中执行原生的Hibernate操作,如设置分页参数`setFirstResult`和`setMaxResults`。 ### 四、PageBean类设计 为了封装分页信息,可以创建一个`PageBean`类,它...
- `UserDaoImpl`: 实现了`UserDao`接口,利用Spring的`HibernateDaoSupport`简化了与Hibernate的交互,通过`HibernateCallback`执行查询操作。 - `index.jsp`: 用户输入界面,可能包含一个表单,提交用户ID。 - `...
在`MemberDaoImpl`实现类中,我们使用了Spring的`HibernateDaoSupport`类作为基类,它提供了对Hibernate操作的支持。`queryForPage` 方法通过`getHibernateTemplate().executeFind()`方法执行HQL查询,并利用`...
使用BlobByteArrayType字段类型后,为什么我们就可以象一般的字段类型一样操作Blob字段呢?可以确定的一点是:BlobByteArrayType不可能逾越Blob天生的操作方式,原来是BlobByteArrayType数据类型本身具体数据访问...
在`queryForPage`方法中,我们使用了`HibernateCallback`接口回调,通过`getHibernateTemplate().executeFind()`执行HQL查询并设置分页参数`setFirstResult`和`setMaxResults`。`getAllRowCount`方法则直接返回HQL...
在Java Web开发中,使用Spring、Hibernate和Struts2进行整合是常见的技术栈,这三种框架结合可以构建出高效、可维护的业务应用。在这个场景下,分页显示是提高用户体验的重要一环,尤其是在处理大量数据时。下面将...
在Java EE环境中,Struts2、Hibernate和Spring这三大框架的整合为实现分页提供了一种高效的方法。下面将详细介绍如何在Struts2中结合Hibernate进行分页处理。 首先,我们需要在DAO层实现分页查询。在本例中,我们...
在企业级应用开发中,Struts2、Hibernate 和 Spring(通常简称为 SSH 框架)是三个非常重要的技术栈。它们各自解决不同的问题,并且通过良好的集成可以构建出高效、稳定的应用系统。本文将详细介绍如何在 Struts2 + ...
3. **模板方法模式**:Spring 为 Hibernate 提供了三种主要的支持方式:`HibernateDaoSupport`、`HibernateTemplate` 和 `HibernateCallback` 接口。其中,`HibernateTemplate` 是一个非常实用的工具类,它可以简化 ...
在Java Web开发中,使用Hibernate、Struts和Spring构建应用程序是一种常见的技术栈,这三个框架分别负责持久层、表现层和业务层的管理。在这个场景下,我们讨论的是如何利用这些框架实现通用的分页查询功能,这在...
异常处理在SSH项目中也是非常重要的,可以使用Spring的AOP特性,定义全局异常处理器,捕获并处理可能出现的异常,提供统一的错误信息反馈给用户,提高系统的健壮性。 总的来说,SSH整合技术提供了强大的企业级应用...
接下来,我们将详细介绍如何在Spring + Hibernate + Struts2项目中实现分页功能。 ##### 4.1 DAO层设计 在DAO(Data Access Object)层,我们需要设计用于处理数据访问操作的接口和实现类。这里主要关注的是分页...
此外,`HibernateTemplate`还支持`HibernateCallback`接口,允许开发者在回调方法`doInHibernate(Session session)`中使用原生的Hibernate API,以应对更复杂的数据访问需求。这种方法确保了灵活性,即使在Spring的...