【发布时间】:2020-04-24 03:08:45
【问题描述】:
环境
HikariCP version: HikariCP-java7 2.4.13
JDK version : 1.7.0_080
Database : PostgreSQL
Driver version : 9.1-901.jdbc3
spring,使用 HikariCP VS c3p0,相同的代码,不同的结果
@Transactional
public Integer enableItem(Long id){
//change item status from 0 to 1
Integer result = itemDao.enableItem(id);
//load item
//if c3p0 , item status is new value 1
// but Hikari, item status still is 0
Item item = itemDao.findItemById(id);
return result;
}
在同一个事务中,先把item status从0改为1,然后读取最新的item信息,如果c3p0,item status是新值1,但是Hikari,item status还是0
Hikari 配置:
<property name="driverClassName" value="#{meta['dataSource.driverClassName']}" />
<property name="jdbcUrl" value="#{meta['dataSource.url']}" />
<property name="username" value="#{meta['dataSource.username']}" />
<property name="password" value="#{meta['dataSource.password']}" />
<property name="readOnly" value="false" />
<property name="idleTimeout" value="#{meta['dataSource.maxIdleTime']}" />
<property name="connectionTimeout" value="30000" />
<property name="maxLifetime" value="1800000" />
<property name="maximumPoolSize" value="#{meta['dataSource.maxPoolSize']}" />
<property name="minimumIdle" value="#{meta['dataSource.minPoolSize']}" />
</bean>
我希望通过 Hikari 获得最新的价值。配置有问题吗?
【问题讨论】: