我使用Hibernate来实现对运行Jboss5一个Web应用程序的DAO层(DB的Sybase)。我如何检查DB是交易之间的锁定
我面临的问题是当客户端/用户界面多次同时进行HTTP调用时(这反过来又会调用DAO插入方法)会导致两个调用在几乎相同的时间运行DAO插入方法。我真正想要的是
- 第1请求调用DAO方法
- 1请求读取当前的分贝值
- 检查如果基于当前的分贝值
- 如果有效的新数据是有效的,插入新的价值
- ,然后第二个请求读取当前dB值
- 检查新数据是否有效
- 如果有效,将值...等等,如果有更多的呼叫
我DAO层的代码看起来像这样:
@Override
@Transactional
public Set<PartyData> insertPartyData(final Set<PartyData> pData) throws DataServiceException
{
sessionFactory.getCurrentSession().getTransaction().begin();
//code to read the current db value
//validation code to check if new value can be inserted based on what's currently in db
sessionFactory.getCurrentSession().save(pData);
sessionFactory.getCurrentSession().getTransaction().commit();
}
问题?
如何确保数据库在一个事务的持续时间内锁定表,以便任何其他请求等到上一个事务完成时才会等待?
你使用什么web容器? – MaVRoSCy
Web容器 - Jboss5 – kapricanon
您正在使用哪些DBMS? Postgres的?甲骨文? –