如何使用Spring Hibernate&强制进行数据库事务知识库

时间:2016-04-13 14:43:26

标签: java spring hibernate transactions spring-boot

使用Spring Boot(非常新手)和Hibernate& CrudRepository我试图在MySQL数据库中使用实际事务来强制阻塞(我只需要允许一个请求在我的服务中执行特定操作,我的策略是锁定数据库中的某个对象同步我的所有服务器。)

使用@Transactional甚至@EnableTransactionManagement创建逻辑事务而不提交直到成功,但它不会创建数据库事务,因此其他请求可以修改同一记录并继续。我该如何创建此类交易?

代码示例:

@Entity
@Table(name = "locks")
public class Lock {
    @Id
    @Column(name = "id", nullable = false, unique = true)
    private int id;

    @Column(name = "locked_at")
    @Temporal(TemporalType.TIMESTAMP)
    private Date lockedAt = null;
}

@EnableTransactionManagement
@Transactional
public interface LockDao extends CrudRepository<Lock, Integer> {
}

public class MyClass {
    @Autowired
    private final LockDao lockDao;

    @Transactional
    public void doSomething() {
        Lock lock = new Lock();
        lock.setId(1);
        lock.setLockedAt(new Date());
        lockDao.save(lock);

        // Do something 
    }
}

0 个答案:

没有答案