hibernate applicationContext-db.xml

来源:互联网 发布:淘宝卖衣服客服与 编辑:程序博客网 时间:2024/05/21 17:47

 <?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/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">

 <bean id="propertyConfigurer"
  class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  <property name="location">
   <value>classpath:c3p0.properties</value>
  </property>
 </bean>

 <!-- c3p0连接池设置 -->
 <bean id="dataSource"
  class="com.mchange.v2.c3p0.ComboPooledDataSource"
  destroy-method="close">
  <property name="driverClass">
   <value>${hibernate.connection.driver_class}</value>
  </property>
  <property name="jdbcUrl">
   <value>${hibernate.connection.url}</value>
  </property>
  <property name="user">
   <value>${hibernate.connection.username}</value>
  </property>
  <property name="password">
   <value>${hibernate.connection.password}</value>
  </property>

  <!--连接池中保留的最小连接数。-->
  <property name="minPoolSize">
   <value>5</value>
  </property>

  <!--连接池中保留的最大连接数。Default: 15 -->
  <property name="maxPoolSize">
   <value>30</value>
  </property>

  <!--初始化时获取的连接数,取值应在minPoolSize与maxPoolSize之间。Default: 3 -->
  <property name="initialPoolSize">
   <value>10</value>
  </property>

  <!--最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0 -->
  <property name="maxIdleTime">
   <value>60</value>
  </property>

  <!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 -->
  <property name="acquireIncrement">
   <value>5</value>
  </property>

  <!--JDBC的标准参数,用以控制数据源内加载的PreparedStatements数量。但由于预缓存的statements  
   属于单个connection而不是整个连接池。所以设置这个参数需要考虑到多方面的因素。  
   如果maxStatements与maxStatementsPerConnection均为0,则缓存被关闭。Default: 0-->
  <property name="maxStatements">
   <value>0</value>
  </property>

  <!--每60秒检查所有连接池中的空闲连接。Default: 0 -->
  <property name="idleConnectionTestPeriod">
   <value>60</value>
  </property>

  <!--定义在从数据库获取新连接失败后重复尝试的次数。Default: 30 -->
  <property name="acquireRetryAttempts">
   <value>30</value>
  </property>

  <!--获取连接失败将会引起所有等待连接池来获取连接的线程抛出异常。但是数据源仍有效  
   保留,并在下次调用getConnection()的时候继续尝试获取连接。如果设为true,那么在尝试  
   获取连接失败后该数据源将申明已断开并永久关闭。Default: false-->
  <property name="breakAfterAcquireFailure">
   <value>true</value>
  </property>

  <!--因性能消耗大请只在需要的时候使用它。如果设为true那么在每个connection提交的  
   时候都将校验其有效性。建议使用idleConnectionTestPeriod或automaticTestTable  
   等方法来提升连接测试的性能。Default: false -->
  <property name="testConnectionOnCheckout">
   <value>false</value>
  </property>
 </bean>

 <!-- Hibernate SessionFactory -->
 <bean id="sessionFactory"
  class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"
  lazy-init="false">
  <property name="dataSource" ref="dataSource" />
  <property name="mappingDirectoryLocations">
   <list>
    <value>classpath:com/sean/xxx/system/po</value>
   </list>
  </property>
  <property name="hibernateProperties">
   <props>
    <prop key="hibernate.dialect">
     ${hibernate.dialect}
    </prop>
    <prop key="hibernate.show_sql">
     ${hibernate.showsql}
    </prop>
    <prop key="hibernate.generate_statistics">true</prop>
    <prop key="hibernate.connection.release_mode">
     auto
    </prop>
    <prop key="hibernate.autoReconnect">true</prop>
    <prop
     key="hibernate.bytecode.use_reflection_optimizer">
     true
    </prop>
    <prop key="hibernate.cache.use_query_cache">true</prop>

    <!-- 配置Hibernate的二级缓存 -->
    <prop key="hibernate.cache.provider_class">
     org.hibernate.cache.EhCacheProvider
    </prop>
    <prop key="hibernate.cache.use_second_level_cache">
     true
    </prop>

    <!-- 设置一次提交的sql语句数量 -->
    <prop key="hibernate.jdbc.batch_size">50</prop>

    <!-- 是否在Hibernate语句执行后关闭session -->
    <!--
     <prop key="hibernate.transaction.auto_close_session">true</prop>
    -->

    <!--
     <prop key="hibernate.connection.pool_size">10</prop>
    -->
   </props>
  </property>
 </bean>
 
 <!-- SpringHibernate 事务管理 -->
 <bean id="transactionManagerHibernate"
  class="org.springframework.orm.hibernate3.HibernateTransactionManager">
  <property name="sessionFactory">
   <ref local="sessionFactory" />
  </property>
 </bean>
 
 <!-- hibernate 事务管理 -->
 <bean id="mallFrameworkManagerHibernate" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" abstract="true">
  <property name="transactionManager">
   <ref local="transactionManagerHibernate" />
  </property>
  <property name="transactionAttributes">
   <props>
    <prop key="add*">PROPAGATION_REQUIRED</prop>
    <prop key="update*">PROPAGATION_REQUIRED</prop>
    <prop key="delete*">PROPAGATION_REQUIRED</prop>
    <prop key="save*">PROPAGATION_REQUIRED</prop>
   </props>
  </property>
 </bean>
 
 <!-- 泛类DAO -->
 <bean id="genericDao" parent="mallFrameworkManagerHibernate">
  <property name="target">
   <bean id="genericImp" class="com.sean.xxx.base.business.store.imp.GenericImp">
    <property name="sessionFactory" ref="sessionFactory"></property>
   </bean>
  </property>
 </bean>
</beans>

原创粉丝点击