<!-- 配置数据库连接池(c3p0) -->
<!-- <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
基本信息
<property name="jdbcUrl" value="${jdbc.url}"></property>
<property name="driverClass" value="${jdbc.driver}"></property>
<property name="user" value="${jdbc.username}"></property>
<property name="password" value="${jdbc.password}"></property>
其他配置
连接池中保留的最小连接数。
<property name="minPoolSize" value="10" />
连接池中保留的最大连接数。Default: 15
<property name="maxPoolSize" value="100" />
<property name="initialPoolSize" value="10" />
最大空闲时间,1800秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0
<property name="maxIdleTime" value="1800" />
当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3
<property name="acquireIncrement" value="3" />
JDBC的标准参数,用以控制数据源内加载的PreparedStatements数量。但由于预缓存的statements
属于单个connection而不是整个连接池。所以设置这个参数需要考虑到多方面的因素。
如果maxStatements与maxStatementsPerConnection均为0,则缓存被关闭。Default: 0
<property name="maxStatements" value="1000" />
每60秒检查所有连接池中的空闲连接。Default: 0
<property name="idleConnectionTestPeriod" value="60" />
定义在从数据库获取新连接失败后重复尝试的次数。Default: 30
<property name="acquireRetryAttempts" value="30" />
两次连接中间隔时间,单位毫秒。Default: 1000
<property name="acquireRetryDelay" value="1000" />
true表示pool向数据库请求连接失败后标记整个pool为block并close,
就算后端数据库恢复正常也不进行重连,客户端对pool的请求都拒绝掉。
false表示不会标记 pool为block,新的请求都会尝试去数据库请求connection。
默认为false。因此,如果想让数据库和网络故障恢复之后,
pool能继续请求正常资源必须把此项配置设为false
<property name="breakAfterAcquireFailure" value="false" />
因性能消耗大请只在需要的时候使用它。如果设为true那么在每个connection提交的
时候都将校验其有效性。建议使用idleConnectionTestPeriod或automaticTestTable
等方法来提升连接测试的性能。Default: false
<property name="testConnectionOnCheckout" value="false" />
</bean> -->
datasource:
<bean id="dataSource" class="org.springframework.jdbc.datasource.LazyConnectionDataSourceProxy">
<property name="targetDataSource">
<bean id="mainDataSource" class="com.jolbox.bonecp.BoneCPDataSource" destroy-method="close">
<property name="driverClass" value="${jdbc.driver}" />
<property name="jdbcUrl" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
<!-- 检查数据库连接池中空闲连接的间隔时间(分) 默认:240 -->
<property name="idleConnectionTestPeriodInMinutes" value="1"/>
<!-- 连接池中未使用的链接最大存活时间(分) 默认:240 -->
<property name="idleMaxAgeInMinutes" value="4"/>
<!-- 每个分区最大的连接数 -->
<property name="maxConnectionsPerPartition" value="20"/>
<!-- 每个分区最小的连接数 -->
<property name="minConnectionsPerPartition" value="2"/>
<!-- 分区数 默认值:2,最小值:1 -->
<property name="partitionCount" value="3"/>
<!-- 连接数不够时,每次创建的新链接个数 默认值:2 -->
<property name="acquireIncrement" value="2"/>
<!-- Statement实例缓存个数 默认值:0 -->
<property name="statementsCacheSize" value="50"/>
<!-- 每个分区释放链接助理进程的数量 默认值:3 -->
<property name="releaseHelperThreads" value="3"/>
</bean>
</property>
</bean>
datasource
sessionFactory:
<!-- 配置SessionFactory -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
<property name="entityCacheStrategies">
<props>
<prop key="com.astasys.dms.coeus.audit.LogEntry">read-only</prop>
<prop key="com.astasys.dms.coeus.domainobjects.HierarchicalNode">read-write</prop>
<prop key="com.astasys.dms.coeus.roles.RoleExecutor">read-write</prop>
</props>
</property>
<property name="collectionCacheStrategies">
<props>
<prop key="com.astasys.dms.coeus.domainobjects.HierarchicalNode.descriptions">read-write</prop>
<prop key="com.astasys.dms.coeus.domainobjects.propertyprofile.PropertyProfileTemplate.propertyDescriptors">read-write</prop>
</props>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${jdbc.dialect}</prop>
<prop key="identityGenerationDisableString"></prop>
<prop key="hibernate.show_sql">false</prop>
<prop key="hibernate.jdbc.batch_size">20</prop>
<prop key="hibernate.max_fetch_depth">3</prop>
<prop key="hibernate.bytecode.use_reflection_optimizer">true</prop>
<prop key="hibernate.cache.use_query_cache">true</prop>
<prop key="hibernate.cache.use_second_level_cache">true</prop>
<prop key="net.sf.ehcache.configurationResourceName">/ehcache.xml</prop>
<prop key="hibernate.query.substitutions">true '1', false '0'</prop>
<prop key="hibernate.cache.region.factory_class">net.sf.ehcache.hibernate.EhCacheRegionFactory</prop>
<prop key="hibernate.connection.isolation">1</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>TypeTable.hbm.xml</value>
<value>RolePlayer.hbm.xml</value>
<value>Message.hbm.xml</value>
<value>Email.hbm.xml</value>
<value>PropertyProfile.hbm.xml</value>
<value>AuditTrail.hbm.xml</value>
<value>OCRNightJob.hbm.xml</value>
<value>OCRLogging.hbm.xml</value>
<value>Announcement.hbm.xml</value>
<value>RelatedSearch.hbm.xml</value>
<value>NotificationGroup.hbm.xml</value>
<value>DocumentWorkflow.hbm.xml</value>
<value>Forum.hbm.xml</value>
<value>Lifecycle.hbm.xml</value>
<value>MailboxImport.hbm.xml</value>
<value>LicenseUsageMonthlyReport.hbm.xml</value>
</list>
</property>
<property name="entityInterceptor">
<bean class="com.astasys.dms.coeus.interceptors.NodeInterceptor" />
</property>
</bean>
sessionFactory
transaction:
<!-- 配置声明式的事务管理(采用基于注解的方式) -->
<bean id="defaultHibernateTx" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<!-- <tx:annotation-driven transaction-manager="transactionManager" /> -->
<tx:advice transaction-manager="defaultHibernateTx" id="txAdvice">
<tx:attributes>
<tx:method name="find*" read-only="false"/>
<tx:method name="add*" rollback-for="Exception"/>
</tx:attributes>
</tx:advice> <aop:config>
<aop:pointcut expression="execution(* com.astasys.transaction.service.*.*(..))" id="txpointcut"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="txpointcut"/>
</aop:config>
transaction aop