zoukankan      html  css  js  c++  java
  • 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>
     
     
    更多文章:
  • 相关阅读:
    mysql 中文字段排序( 按拼音首字母排序) 的查询语句
    纯css3样式属性制作各种图形图标
    10个超有用的网页设计工具和资源
    手风琴导航效果实现
    css3动画导航实现
    java实现将资源文件转化成sql语句导入数据库
    select实现输入模糊匹配与选择双重功能
    js一些问题总结
    java实现excel与mysql的导入导出
    《C++程序设计》朝花夕拾
  • 原文地址:https://www.cnblogs.com/svennee/p/4080655.html
Copyright © 2011-2022 走看看