0

请建议我解决这个问题。

我正在使用 org.springframework.orm.hibernate3.HibernateTransactionManager 作为服务的事务管理器。并像这样将代码包装在此事务中

TransactionStatus transactionDefinition = new DefaultTransactionDefinition();
DefaultTransactionDefinition transactionStatus = transactionManager.getTransaction(transactionDefinition);

//DaoCalls

transactionManager.commit(transactionStatus);

Dao 调用是对数据库表进行大量 CRUD(删除、更新、插入)操作。

问题是这个表被锁定了更长的时间。并且所有这些 Dao 调用都应该在单个事务中完成。

任何人都可以建议我解决这个问题。

4

2 回答 2

1

我只看到几个选项:

  • 优化查询
  • 如果可以的话,并行运行一些查询(使用 java.utils.concurrent 中的 Executors)
  • 根据您的要求尝试减少锁定(例如使用读取或写入修复进行补偿)
于 2012-04-16T09:13:23.880 回答
1

我会考虑在数据库上编写一个存储过程来执行复杂的操作。这样,您可以更好地控制正在执行的锁定和查询,并且由于操作发生在数据库本身上,您没有将数据移入和移出休眠的开销。

于 2012-04-16T09:18:53.940 回答