<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<!-- 数据库连接资源文件 -->
<bean
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<value>WEB-INF/config/dbconfig.properties</value>
</property>
</bean>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName">
<value>${driverClass}</value>
</property>
<property name="url">
<value>${jdbcUrl}</value>
</property>
<property name="username">
<value>${userName}</value>
</property>
<property name="password">
<value>${password}</value>
</property>
</bean>
<!-- SessionFactory配置 start -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="mappingDirectoryLocations">
<list>
<value>${mappingDirectory}</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
${hibernate.dialect}
</prop>
<prop key="hibernate.show_sql">
${hibernate.show_sql}
</prop>
<prop key="hibernate.format_sql">
${hibernate.format_sql}
</prop>
<prop key="hibernate.cache.use_second_level_cache">
${hibernate.cache.use_second_level_cache}
</prop>
<prop key="hibernate.cache.provider_class">
${hibernate.cache.provider_class}
</prop>
<prop key="hibernate.cache.use_query_cache">
${hibernate.cache.use_query_cache}
</prop>
</props>
</property>
</bean>
<!-- 定义事务管理器(声明式的事务) -->
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<!-- 配置事务代理,注入事务管理transactionManager,由Spring来代理事务,设置事务属性 -->
<bean id="transactionProxy" abstract="true"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager">
<ref bean="transactionManager" />
</property>
<property name="transactionAttributes">
<props>
<prop key="*">PROPAGATION_REQUIRED, -Exception</prop>
</props>
</property>
</bean>
<!-- 配置DAO -->
<bean id="webHibernateDao" class="com.sg123.sg_dao.hibernate.dao.SuperDAO">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource">
<ref bean="dataSource" />
</property>
</bean>
<bean id="jdbcDAO" class="com.sg123.sg_dao.jdbc.dao.JDBCSuperDAO"
parent="jdbcTemplate">
</bean>
<!--
包含事务的业务类配置示例一 <bean id="testProxy" parent="transactionProxy">
<property name="target"> <ref bean="testService" /> </property>
</bean> <bean id="testService" class="test.TestService"> <property
name="himTemplate"> <ref bean="himJDBCTemplate" /> </property>
<property name="dboTemplate"> <ref bean="dboJDBCTemplate" />
</property> </bean> 包含事务的业务类配置示例二 <bean id="hibernateTestSrv"
parent="transactionProxy"> <property name="target"> <ref
bean="hibernateTestService" /> </property> </bean> <bean
id="hibernateTestService" class="test.HibernateTest"> <property
name="himDAO"> <ref bean="himHibernateDAO" /> </property> <property
name="dboDAO"> <ref bean="dboHibernateDAO" /> </property> </bean>
-->
</beans>
==========dbconfig.properties================
#Generated by ResourceBundle Editor (http://eclipse-rbe.sourceforge.net)
#\u5f53\u8fde\u63a5\u6c60\u4e2d\u7684\u8fde\u63a5\u7528\u5b8c\u65f6\uff0cC3P0\u4e00\u6b21\u6027\u521b\u5efa\u65b0\u8fde\u63a5\u7684\u6570\u76ee
acquireIncrement = 20
#\u5b9a\u4e49\u5728\u4ece\u6570\u636e\u5e93\u83b7\u53d6\u65b0\u8fde\u63a5\u5931\u8d25\u540e\u91cd\u590d\u5c1d\u8bd5\u83b7\u53d6\u7684\u6b21\u6570\uff0c\u9ed8\u8ba4\u4e3a30
acquireRetryAttempts = 100
#\u4e24\u6b21\u8fde\u63a5\u4e2d\u95f4\u9694\u65f6\u95f4\uff0c\u5355\u4f4d\u6beb\u79d2\uff0c\u9ed8\u8ba4\u4e3a1000
acquireRetryDelay = 1000
#\u8fde\u63a5\u5173\u95ed\u65f6\u9ed8\u8ba4\u5c06\u6240\u6709\u672a\u63d0\u4ea4\u7684\u64cd\u4f5c\u56de\u6eda\u3002\u9ed8\u8ba4\u4e3afalse
autoCommitOnClose = false
#\u83b7\u53d6\u8fde\u63a5\u5931\u8d25\u5c06\u4f1a\u5f15\u8d77\u6240\u6709\u7b49\u5f85\u83b7\u53d6\u8fde\u63a5\u7684\u7ebf\u7a0b\u629b\u51fa\u5f02\u5e38\u3002\u4f46\u662f\u6570\u636e\u6e90\u4ecd\u6709\u6548\u4fdd\u7559\uff0c\u5e76\u5728\u4e0b\u6b21\u8c03
# \u7528getConnection()\u7684\u65f6\u5019\u7ee7\u7eed\u5c1d\u8bd5\u83b7\u53d6\u8fde\u63a5\u3002\u5982\u679c\u8bbe\u4e3atrue\uff0c\u90a3\u4e48\u5728\u5c1d\u8bd5\u83b7\u53d6\u8fde\u63a5\u5931\u8d25\u540e\u8be5\u6570\u636e\u6e90\u5c06\u7533\u660e\u5df2\u65ad\u5f00\u5e76\u6c38\u4e45\u5173\u95ed\u3002\u9ed8\u8ba4\u4e3a
# false\uff1b
breakAfterAcquireFailure = false
#\u5f53\u8fde\u63a5\u6c60\u7528\u5b8c\u65f6\u5ba2\u6237\u7aef\u8c03\u7528getConnection()\u540e\u7b49\u5f85\u83b7\u53d6\u65b0\u8fde\u63a5\u7684\u65f6\u95f4\uff0c\u8d85\u65f6\u540e\u5c06\u629b\u51faSQLException\uff0c\u5982\u8bbe\u4e3a0\u5219\u65e0\u9650\u671f\u7b49\u5f85\u3002\u5355\u4f4d\u6beb\u79d2\uff0c\u9ed8\u8ba4\u4e3a0\uff1b
checkoutTimeout = 10000
#\u6570\u636e\u5e93\u9a71\u52a8\u7c7b
driverClass = com.mysql.jdbc.Driver
hibernate.cache.provider_class = org.hibernate.cache.EhCacheProvider
hibernate.cache.use_query_cache = true
hibernate.cache.use_second_level_cache = false
hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect
hibernate.format_sql = true
hibernate.show_sql = true
#\u59cb\u5316\u65f6\u521b\u5efa\u7684\u8fde\u63a5\u6570\uff0c\u5e94\u5728minPoolSize\u4e0emaxPoolSize\u4e4b\u95f4\u53d6\u503c\u3002\u9ed8\u8ba4\u4e3a3\uff1b
initialPoolSize = 20
#\u6570\u636e\u5e93\u8fde\u63a5url
jdbcUrl = jdbc:mysql://10.10.0.189:3306/databaseName?useUnicode=true&characterEncoding=utf-8
mappingDirectory = WEB-INF/HibernateMapping
#\u6700\u5927\u7a7a\u95f2\u65f6\u95f4\uff0c\u8d85\u8fc7\u7a7a\u95f2\u65f6\u95f4\u7684\u8fde\u63a5\u5c06\u88ab\u4e22\u5f03\u3002\u4e3a0\u6216\u8d1f\u6570\u5219\u6c38\u4e0d\u4e22\u5f03\u3002\u9ed8\u8ba4\u4e3a0\uff1b
maxIdleTime = 10000
#\u63a5\u6c60\u4e2d\u4fdd\u7559\u7684\u6700\u5927\u8fde\u63a5\u6570\u3002\u9ed8\u8ba4\u4e3a15
maxPoolSize = 100
#JDBC\u7684\u6807\u51c6\u53c2\u6570\uff0c\u7528\u4ee5\u63a7\u5236\u6570\u636e\u6e90\u5185\u52a0\u8f7d\u7684PreparedStatement\u6570\u91cf\u3002\u4f46\u7531\u4e8e\u9884\u7f13\u5b58\u7684Statement\u5c5e
# \u4e8e\u5355\u4e2aConnection\u800c\u4e0d\u662f\u6574\u4e2a\u8fde\u63a5\u6c60\u3002\u6240\u4ee5\u8bbe\u7f6e\u8fd9\u4e2a\u53c2\u6570\u9700\u8981\u8003\u8651\u5230\u591a\u65b9\u9762\u7684\u56e0\u7d20\uff0c\u5982\u679cmaxStatements\u4e0e
# maxStatementsPerConnection\u5747\u4e3a0\uff0c\u5219\u7f13\u5b58\u88ab\u5173\u95ed\u3002\u9ed8\u8ba4\u4e3a0\uff1b
maxStatements = 0
#\u8fde\u63a5\u6c60\u5185\u5355\u4e2a\u8fde\u63a5\u6240\u62e5\u6709\u7684\u6700\u5927\u7f13\u5b58Statement\u6570\u3002\u9ed8\u8ba4\u4e3a0\uff1b
maxStatementsPerConnection = 0
#C3P0\u662f\u5f02\u6b65\u64cd\u4f5c\u7684\uff0c\u7f13\u6162\u7684JDBC\u64cd\u4f5c\u901a\u8fc7\u5e2e\u52a9\u8fdb\u7a0b\u5b8c\u6210\u3002\u6269\u5c55\u8fd9\u4e9b\u64cd\u4f5c\u53ef\u4ee5\u6709\u6548\u7684\u63d0\u5347\u6027\u80fd\uff0c\u901a\u8fc7\u591a\u7ebf\u7a0b\u5b9e\u73b0\u591a\u4e2a\u64cd\u4f5c\u540c\u65f6\u88ab\u6267\u884c\u3002\u9ed8\u8ba4\u4e3a3\uff1b
numHelperThreads = 20
#\u6570\u636e\u5e93\u5bc6\u7801
password = XXXX
#\u7528\u6237\u4fee\u6539\u7cfb\u7edf\u914d\u7f6e\u53c2\u6570\u6267\u884c\u524d\u6700\u591a\u7b49\u5f85\u7684\u79d2\u6570\u3002\u9ed8\u8ba4\u4e3a300\uff1b
propertyCycle = 600
#\u6570\u636e\u5e93\u7528\u6237\u8d26\u53f7
userName = XXXX