SSH框架的項目在訪問數據庫的時候,訪問完成后一直占用鏈接,不釋放,導致過了一段時間后,服務器沒掛,就是有訪問數據庫的連接是時候,一直卡住.
這里為您提供的是一個經過優化的SSH整合連數據庫實例,用于數據庫連接的SSH整合代碼。
ssh項目中,隨著項目的啟動spring會建立數據庫連接池。
SSH整合連數據庫實例
1.配置spring對應的hibernate文件:
<prop key="hibernate.connection.release_mode">after_statement</prop> 事務提交后自動釋放連接
2配置事務
<!--spring 聲明式事務管理器 -->
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<!--Spring事務攔截器 -->
<bean id="transactionInterceptor"
class="org.springframework.transaction.interceptor.TransactionInterceptor">
<property name="transactionManager" ref="transactionManager" />
<property name="transactionAttributes">
<props>
<!-- 以browse、list、load、get及is開頭的所有方法采用只讀型事務控制類型 -->
<prop key="browse*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="list*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="load*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="is*">PROPAGATION_REQUIRED,readOnly</prop>
<!-- 所有方法均進行事務控制,如果當前沒有事務,則新建一個事務 -->
<prop key="*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
<!-- 自動代理類 -->
<bean
class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<property name="beanNames">
<list>
<value>*Impl</value>
</list>
</property>
<!-- 這個屬性為true時,表示被代理的是目標類本身而不是目標類的接口 -->
<property name="proxyTargetClass">
<value>true</value>
</property>
<!-- 依賴注入上面定義的事務攔截器transactionInterceptor -->
<property name="interceptorNames">
<list>
<value>transactionInterceptor</value>
</list>
</property>
</bean>
- PC官方版
- 安卓官方手機版
- IOS官方手機版