spring对hibernate的集成中的回调(CallBack)机制

本文探讨了在Spring与Hibernate集成中如何使用回调(Callback)机制进行CRUD操作。当执行hibernateTemplate.save()时,回调机制使得操作回到Spring容器中,由容器管理Session和Transaction。通过分析源码,解释了HibernateCallback接口的角色,强调了doInHibernate()方法在回调过程中的关键作用。最后,文章提供了一个简单的例子来模拟回调过程。
摘要由CSDN通过智能技术生成

  回调函数对于我们来说并不陌生,之前我们在学习js的时候经常用到回调函数,在java基础中也接触到了回调函数,在这篇博客中我们将介绍spring和hibernate集成后的回调函数的使用。

  为什么使用回调函数?

  

  我们都知道程序员在完成CRUD操作的时候,需要用到session来操作,但是在spirng和hibernate集成以后,session是有spring容器来产生并且管理,也就说如果我们在完成CRUD操作的时候,需要去spring容器中拿到session然后完成一系列的操作,但是spring并没有提供这样的API让我们在spring容器来获得session。那么我们拿不到这个session自然就不能完成CRUD操,那么到底是怎样的完成的,下面以save方法为例来说明。

                

  当我们执行hibernateTemplate.save(classes)代码的时候,这时候会利用回调机制将save方法回到spring容器中,然后在有spring容器完成保存一系列的操作

         Session session = sessionFactory.getCurrentSession();
Transaction transaction = session.beginTransaction();
Session.save(classes)
session.close();

 下面我们来跟踪一下源码:

  

  上面我们在执行save方法以后,跟踪源码的一个流程图,我们来简单的分析一下:

  首先会将classes实参传递到entity这个形参上面,然后在save方法里面调用了executeWithNativeSession()而这个方法接收了一大坨参数,上面圈出来的地方,而这个参数的类型是一个接口HibernateCallback类型,下面给出HibernateCallback的代码,这是一个接口:

public interface HibernateCallback {

	Object doInHibernate(Session session) throws HibernateException, SQLException;

}

评论 50
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

g-Jack

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值