2012-12-17 50 views
3

我将获取多个Servlet请求表单客户端来更新数据库中的某些条目。目前我使用Postgre进行休眠。我所做的是我读取数据库的当前值,然后添加一个该值并保存每个请求。但是,如果两个人同时读取数据库并添加它,它将不会像我想要的那样计数。我有一些建议让它“同步”。但是如果请求的数量变大,那么对于一些用户来说可能会有相当大的延迟。如何处理多个servlet请求以更新DB值

有没有更快的方式来更新+1值,而无需读取和写入?如果最好的做法是使用同步,那么如何使它更快(更少的等待时间)?

+0

你怎么做持久性? “普通香草”JDBC还是JPA?如果是JPA,只需使用EJB作为服务层。您将受益于透明的容器管理事务管理。如果“普通的vanila”JDBC那么,那么,寻找像Spring这样的传统框架。它有一个'JdbcTemplate'的东西。 – BalusC

回答

1

您可以使用Spring事务管理(参见文档here)。

Spring配置:

<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> 
    <property name="dataSource" ref="dataSource"/> 
</bean> 

标注您的休眠读写方法使用@Transactional像

@Transactional(value = "txManager" ... 
public int incrementValue(){ 

然后根据自己的需要定义隔离性能。查看不同的隔离选项的TransactionDefinition。例如,TransactionDefinition.ISOLATION_READ_COMMITTED