您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

处理休眠事务

处理休眠事务

我本人已经遇到了很多次。通常,我的第一个建议是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
        }
    });
....

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

其他 2022/1/1 18:15:44 有350人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶