栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

处理休眠事务

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

处理休眠事务

我本人已经遇到了很多次。通常,我的第一个建议是Spring事务管理,但是据我了解,您正在尝试限制所使用的第三方库的数量。

由于您在HibernateUtil类中使用静态API,因此您可能会发现将逻辑合并到方法中并将“您要在事务中执行的操作”代码(因控制器而异)放在回调中可能会有所帮助。

首先,定义一个接口来描述每个控制器的inTransaction行为:

public interface TransactionCallback {    void doInTransaction();}

现在,在您的HibernateUtil类中创建一个静态方法来处理开始,提交,并在必要时回滚事务:

public class HibernateUtil {    public static void inTransaction(TransactionCallback tc) {        Transaction transaction = HibernateUtil.getSessionFactory().getCurrentSession().getTransaction();        if (!HibernateUtil.getSessionFactory().getCurrentSession().getTransaction().isActive()) { transaction.begin(); try {     tc.doInTransaction();     transaction.commit(); } catch (Exception e) {     transaction.rollback(); }        }    }}

在控制器中,您可以将新方法与匿名内部类一起使用:

....    HibernateUtil.inTransaction(new TransactionCallback() {        void doInTransaction() { // do stuff for this controller        }    });....

这种方法至少应该照顾好您要消除的重复项,并且有足够的扩展空间来处理特定的异常等。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/381617.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号