【问题标题】:Spring Pessimistic locking弹簧悲观锁定
【发布时间】:2011-12-27 15:21:09
【问题描述】:

我有java下的spring项目,使用hibernate查询,我喜欢用悲观锁。

Spring + Hibernate 中如何进行悲观锁?

编辑:

@Loggable(value = LogLevel.TRACE)
@Transactional
@Override
public void updateBalance(String id, BigDecimal amount) {
    Session session = sessionFactory.getCurrentSession();
    sessionFactory.openSession();
    Transaction tx = session.beginTransaction();
    session.flush();
    Account acc = (Account) session.get(Account.class, id, LockMode.UPGRADE);
    acc.setName("New Account");
    acc.setBalance(acc.getBalance().subtract(amount));
    save(acc);
    try{
        tx.commit();
    }catch (TransactionException e){
        tx.rollback();
    }
    session.close();
}

问题:

我想在一个方法中使用悲观锁定,我把这个方法称为不同的方法。当我从第一种方法调用它时,悲观工作正常,但是当我从第二种方法调用它时它给出(事务无法提交)

例外:

Could not commit Hibernate transaction; nested exception is org.hibernate.
TransactionException: Transaction not successfully started

【问题讨论】:

  • Google“Spring + Hibernate 中的悲观锁定”并获取:docs.jboss.org/hibernate/core/3.3/reference/en/html/…
  • @TomaszNurkiewicz:该链接中没有关于 Spring 的内容。
  • 我可以在这里看到一些不好的做法(相当错误) 1)在方法顶部使用@Transactional 同时在方法中打开一个新事务 2)打开一个新会话(sessionFactory.openSession(); while在此之前使用sessionFactory.getCurrentSession() 3)关闭当前会话对象。

标签: java database hibernate transactions pessimistic-locking


【解决方案1】:

http://www.amicabile.com/hybernate/hybernate-chapter5.html

http://javacompleteexamples.blogspot.com/2009/07/how-db-locking-system-works-in.html

编辑:

尝试:

@Override
@Loggable(value = LogLevel.TRACE)
@Transactional
public void updateBalance(String id, BigDecimal amount) {
        Account acc = (Account) sessionFactory.getCurrentSession().get(Account.class, id, LockMode.UPGRADE);
        acc.setBalance(acc.getBalance().subtract(amount));
        save(acc);
}

【讨论】:

  • 我想在一个方法中使用悲观锁定,我把这个方法称为不同的方法。我阅读了这些链接,我解决了问题。但是还有另一个问题,当我从第一种方法调用它时,悲观的工作正常,但是当我从第二种方法调用它时它给出(事务无法提交)
猜你喜欢
  • 2023-03-27
  • 2010-09-12
  • 2014-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-22
  • 1970-01-01
相关资源
最近更新 更多