Spring 集成hibernate时配置连接释放模式

http://zmfkplj.iteye.com/blog/220822
程序出现一个奇怪的现象,用Quartz作业调度启动任务,运行一段时间后,任务会卡在一个查询接口处,久久不能运行完毕。
我本能的发现是不是数据库连接池数量不够?
于是我加带了连接池的大小。但是,问题依然出现。
这时,我就只能使用debug+log来调试了。调试后发现,当发生查询接口执行卡住现象时,程序连接池的确是不够用了,但是其他的任务有的已提前运行完了,有始有终,当前面的任务运行完,它所占用的连接应该会释放啊,这样连接不会存在不够用啊。恍然大悟,就是连接释放有问题。现在数据库连接是交给Hibernate管理的,之前Hibernate环境是另外开发人员配置的,没出现问题之前,没多关注。现在没办法了,去看一下配置。
 
看完spring配置后,果然有问题。现在配置的连接释放模式是on_close,把它设置成auto后就好了。

        < bean
              class = "org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
              id =  "localhost_oracle" >
              < property  name = "dataSource"  ref = "localhost_oracleDS"  />
              < property  name = "persistenceUnitName"  value = "localhost_oracle"  />
              < property  name = "jpaVendorAdapter"  ref = "localhost_oracleJPAVendorAdapter"  />
              < property  name = "jpaPropertyMap"  >
                    < map >
                          < entry  key = "hibernate.transaction.manager_lookup_class"
                                value = "com.atomikos.icatch.jta.hibernate3.TransactionManagerLookup"  />
<!--                    <entry key="hibernate.connection.release_mode" value="on_close" />-->
                          < entry  key = "hibernate.connection.release_mode"  value = "auto"  />
                    </ map >
              </ property >
        </ bean >

 
我觉得on_close的意思就是等当前使用连接的线程显示的关闭时或运行完毕后,线程已消亡,连接就会被释放。
 
连接释放配置:
<property name="hibernate.connection.release_mode">auto</property>
 
 
更多文章:
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值