跳至主要內容

事务

xuejmnet小于 1 分钟

事务

Easy Query提供了支持事务的方法。事务的相关方法如下:

方法默认值描述
beginTransactionnull参数表示数据库隔离级别,默认采用datasource的可以自定义 Connection.TRANSACTION_READ_UNCOMMITTED,Connection.TRANSACTION_READ_COMMITTED,Connection.TRANSACTION_REPEATABLE_READ,* Connection.TRANSACTION_SERIALIZABLE.
Transaction.commit提交事务
Transaction.rollback回滚事务
registerListener(TransactionListener transactionBehavior)设置当前事务的执行行为,包括提交前提交后等处理
close关闭事务,如果事务未提交则自动调用回滚

简单环境

在简单环境下使用编程式开启事务。


    @Test
    public void testTransaction() {
        try (Transaction transaction = easyEntityQuery.beginTransaction()) {
            User user = new User();
            user.setName("新用户");
            user.setVersion(1);
            user.setEnabled(true);
            easyEntityQuery.insertable(user).executeRows();
            easyEntityQuery.insertable(user).executeRows();
            if (true) {
                throw new RuntimeException("模拟异常");
            }
            transaction.commit();
        }
    }

SpringBoot环境

每次都需要调用beginTransaction方法开启事务和commit方法是很麻烦的,
因此在Spring Boot环境下,Easy Query也支持注解式开启事务,即Easy Query支持Spring的@Transactional来开启事务了,同时支持嵌套事务。

    @Transaction
    public void testTransaction() {
        User user = new User();
        user.setName("新用户");
        user.setVersion(1);
        user.setEnabled(true);
        easyEntityQuery.insertable(user).executeRows();
        easyEntityQuery.insertable(user).executeRows();
        if (true) {
            throw new RuntimeException("模拟异常");
        }
    }
上次编辑于:
贡献者: Hoysing