使用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
}
}