`
henghengdh
  • 浏览: 157512 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

使用hibernatecallback的原因

 
阅读更多
转自:http://yeyhan.blog.163.com/blog/static/44179333201022942856795/

在Spring中有了HibernateDaoSupport为什么使用 HibernateCallback
使用 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的原因。
分享到:
评论

相关推荐

    HibernateCallback使用方法

    HibernateCallback 使用方法 HibernateCallback 是 Hibernate 框架中的一种 callback 机制,允许开发者在持久层访问时执行自定义操作。HibernateCallback 是 Spring 框架中与 Hibernate 整合的重要组件,通过它可以...

    hibernate执行原生sql语句

    在上面的代码中,我们使用 `HibernateCallback` 接口来执行原生 SQL 语句,该接口提供了一个 `doInHibernate()` 方法,该方法将在 Hibernate 事务中执行。我们可以在该方法中执行原生 SQL 语句,并使用 `Connection`...

    HibernateTemplate类的使用

    ### HibernateTemplate类的使用详解 #### 一、引言 在Java开发中,持久层框架Hibernate因其优秀的ORM(Object-Relational Mapping)特性被广泛应用。为了更便捷地使用Hibernate,Spring框架提供了一系列工具类来简化...

    getHibernateTemplate

    5. **回调机制**:当`getHibernateTemplate()`的标准方法无法满足特定需求时,可以使用`HibernateCallback`接口进行自定义操作。这允许你在Hibernate的Session内部执行任意操作,同时仍然享受到Spring提供的事务和...

    Spring整合Hibernate 详解.doc

    6.5.4 使用HibernateCallBack HibernateCallBack接口允许开发者在Hibernate操作的前后插入自定义的逻辑。通过实现这个接口,可以在执行特定数据库操作前后的回调函数中进行额外的工作,如事务控制、日志记录等。 ...

    HbernateTemplate的使用.pdf

    例如,在`PersonDAOHibernate`类中,我们看到如何使用HibernateTemplate执行常见的数据库操作。`getPersons()`方法通过调用`find()`获取所有`Person`对象,`getNews()`根据主键获取特定的`Person`,`savePerson()`...

    SSH整合文档

    3. **使用HibernateCallback**: HibernateCallback是一个接口,可以在Session中执行回调方法,例如查询数据。 ```java HibernateCallback<List<Dept>> callback = new HibernateCallback<List<Dept>>() { @...

    spring+hibernate详解

    本文详细介绍了Spring与Hibernate集成的过程,包括如何配置`SessionFactory`、使用`HibernateTemplate`简化数据操作、通过`HibernateDaoSupport`提高代码可维护性以及利用`HibernateCallback`实现更复杂的业务逻辑。...

    Spring整合hibernate

    然而,对于已经使用HibernateTemplate的项目,如果没有明显的性能问题,可以继续使用,因为迁移到新的方式可能需要大量的代码修改。 总的来说,Spring整合Hibernate的核心在于提供事务管理和Session管理,使得在...

    使用Spring进行数据访问

    2. **ORM集成**:Spring通过`HibernateTemplate`和`HibernateCallback`支持Hibernate,简化了事务管理和对象关系映射。同样,对于MyBatis,Spring提供`SqlSessionFactoryBean`和`SqlSessionTemplate`来整合MyBatis,...

    SSH整合技术

    在`findByPage`方法中,使用HibernateCallback接口,通过`getHibernateTemplate().executeFind()`执行自定义的分页查询。例如: ```java @Repository public class CostDaoImpl extends HibernateDaoSupport ...

    Hibernate学习笔记,使用Hibernate做数据层非常方便

    通过`getHibernateTemplate().executeFind()`方法,我们创建了一个`HibernateCallback`回调,内部执行SQL查询。这里使用了HQL(Hibernate Query Language)编写查询语句,`"from ControlScreen order by id desc"`...

    HibernateTemplate的方法使用

    ### HibernateTemplate 的方法使用 #### 一、简介与配置方式 **HibernateTemplate** 是 Spring 框架中用于简化 Hibernate 使用的一个工具类。它通过 AOP(面向切面编程)的思想,封装了大量的 CRUD(创建、读取、...

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

    开发者通过HibernateCallback,可以完全使用Hibernate灵活的方式来访问数据库,解决了Spring封装Hibernate后灵活性不足的缺陷。 24.3 Spring对Hibernate的简化 24.3.4 HibernateTemplate的复杂用法 ...

    HibernateTemplate详细描述以及使用范围

    hibernateTemplate.execute(new HibernateCallback() { public Void doInHibernate(Session session) throws HibernateException, SQLException { session.save(new Person("王五", "123456789")); // 更多业务...

    Hibernate3.6.10用到的jiar

    Hibernate3.6.10用到的jiar antlr-2.7.6.jar,commons-collections-3.1, commons-logging-1.1.3, dom4j-1.6.1, ejb3-persistence, hibernate-jpa-2.0-api-1.0.1.Final, hibernate3, javassist-3.12.0.GA, jta...

    spring配置文件详解

    例如,在配置 Hibernate 模板时,我们使用了 HibernateCallback 对象来执行 Hibernate 操作。这使得我们的应用程序更加灵活和可维护。 Spring 配置文件是 Spring 框架中最重要的配置文件之一,负责定义和配置应用...

    HibernateTemplate源代码

    `HibernateTemplate`通过其核心方法`execute`支持Hibernate访问代码的实现,该方法接受一个实现了`HibernateCallback`接口的匿名内部类或Lambda表达式。 #### 二、类结构与继承关系 `HibernateTemplate`类本身并...

    spring hibernatetemplate

    然而,正如描述中所指出的,直接使用`HibernateTemplate`进行事务管理并不总是最佳实践,尤其是在涉及复杂的事务控制时。在本文中,我们将深入探讨`HibernateTemplate`的工作原理以及为什么在某些情况下应考虑使用`...

    hibernate API

    虽然`HibernateTemplate`提供了很多便利,但它在处理复杂查询时可能需要创建内部类(inner class),如在分页查询时使用`execute(HibernateCallBack)`,这可能会增加调试的复杂性。相比之下,直接使用`Session`进行...

Global site tag (gtag.js) - Google Analytics