數據源配置

一配置數據信息(在.properties文件中)
 1:數據庫數據信息(驅動  URL  用戶名  密碼)
 jdbc.driver=oracle.jdbc.driver.OracleDriver( 有對應的jar包  ojdbc14.jar)
 jdbc.url=jdbc:oracle:thin:@172.16.7.10:1521: testdb
 jdbc.username=devpcmall
 jdbc.password=oracle
 2:連接池的配置(一些屬性值得配置)
 dbcp.initialSize=5
 dbcp.maxActive=20  (最大激活數 
 dbcp.maxIdle=10     (最大空閒數 
 cpool.checkoutTimeout=5000
 cpool.minPoolSize=20
 cpool.maxPoolSize=50
 cpool.maxIdleTime=7200
 cpool.maxIdleTimeExcessConnections= 1800
 cpool.acquireIncrement=1
 3:hibernate的配置(屬性值得配置) 
 hibernate.dialect=org.hibernate.dialect.Oracle10gDialect(方言 針對特定的數據庫生成優化的sql   hibernate-core-3.3.2.GA.jar jar包
 hibernate.show_sql=false輸出sql到控制檯
 hibernate.format_sql=false(格式化sql語句
 hibernate.fetch_size=50(一次性從數據庫中取數據的量 相當於讀
 hibernate.batch_size=25(對數據庫進行批量刪除 更新 插入的批次大寫 相當於寫
二創建spring.xml文件配置連接池 hibernate等的屬性,事務管理  將其整合在一起
1:數據源配置(整合數據庫信息和連接池的一些屬性在連接池中)
<bean id= "dataSource" class ="com.mchange.v2.c3p0.ComboPooledDataSource">(c3p0-0.9.1.2.jar
                         <property name ="driverClass" value="${jdbc.driver}" />(從properties文件中取值
                         <property name ="jdbcUrl" value="${jdbc.url}" />
                         <property name ="user" value="${jdbc.username}" />
                         <property name ="password" value="${jdbc.password}" />
                         <property name ="autoCommitOnClose" value= "true"/>
                         <property name ="checkoutTimeout" value= "${cpool.checkoutTimeout}"/>
                         <property name ="initialPoolSize" value="${cpool.minPoolSize}"/>
                         <property name ="minPoolSize" value="${cpool.minPoolSize}"/>
                         <property name ="maxPoolSize" value="${cpool.maxPoolSize}"/>
                         <property name ="maxIdleTime" value="${cpool.maxIdleTime}"/>
                         <property name ="acquireIncrement" value= "${cpool.acquireIncrement}"/>
                         <property name ="maxIdleTimeExcessConnections" value= "${cpool.maxIdleTimeExcessConnections}" />
             </bean >
2:hibernate配置
<bean id= "sessionFactory" class= "org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean" >(建立基於註解的會話工廠 org.springframework.orm-3.0.5.RELEASE.jar
     

                  <propertyname="dataSource"ref="dataSource"/>(引入上邊將數據庫連接池的信息
                       

<propertyname="namingStrategy">動態表名映射 一個配置文件一個類映射多個表  表結構要相同 hibernate-core-3.3.2.GA.jar
                                     <bean class ="org.hibernate.cfg.ImprovedNamingStrategy" />
                         </property >
         

 <propertyname="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.provider_class">org.hibernate.cache.EhCacheProvider </prop >
          ( hibernate-ehcache-3.3.2.GA.jar 裏的緩存類)
         <prop key= "hibernate.cache.use_query_cache" >false </prop >
            (二級緩存的開閉
         <prop key= "hibernate.query.factory_class">org.hibernate.hql.ast.ASTQueryTranslatorFactory </prop >
            (hibernate-core-3.3.2.GA.jar  hql查詢語言)
         <prop key= "hibernate.jdbc.fetch_size">${hibernate.fetch_size} </prop >
          <prop key= "hibernate.jdbc.batch_size">${hibernate.batch_size} </prop >
      </props >
 </property >


<propertyname="packagesToScan">(hibernate 讀取實體  標註實體路徑
                                     <list >
                                                 <value >com.holytax.*.*.entity </value >
                                                 <value >com.holytax.*.*.*.entity </value >
                                     </list >
                         </property >


<propertyname="eventListeners">監聽事件
    <map >
   <!-- 在事務提交前觸發,在當前記錄中添加審計信息 -->
       <entry key ="save-update">
           <list >
              <bean class= "com.holytax.base.dao.AuditListener" />項目中寫好的類
              <bean class= "org.hibernate.event.def.DefaultSaveOrUpdateEventListener" />hibernate-core-3.3.2.GA.jar
           </list >
         </entry >
         <entry key ="save">
            <list >
               <bean class= "com.holytax.base.dao.AuditListener"/ >
               <bean class= "org.hibernate.event.def.DefaultSaveEventListener" />
            </list >
         </entry >
         <entry key ="update">
             <list >
                <bean class= "com.holytax.base.dao.AuditListener" />
                <bean class= "org.hibernate.event.def.DefaultUpdateEventListener" />
             </list >
           </entry >
           <entry key ="merge">
               <list >
                    <bean class= "com.holytax.base.dao.AuditListener" />
                    <bean class= "org.hibernate.event.def.DefaultMergeEventListener" />
                </list >
            </entry >
<!-- post 在數據提交之後觸發,在日誌文件或是數據庫中記錄日誌 -->
           <entry key ="post-delete">
              <list >
                <bean class= "com.holytax.base.dao.AuditListener" />
              </list >
           </entry >
           <entry key ="post-insert">
                <list >
                   <bean class= "com.holytax.base.dao.AuditListener" />
                </list >
            </entry >
            <entry key ="post-update">
                <list >
                    <bean class= "com.holytax.base.dao.AuditListener" />
                 </list >
                     </entry >
     </map >
</property >
</bean>
3:事物管理器的配置 (單數據源)org.springframework.orm-3.0.5.RELEASE.jar    org.springframework.jdbc-3.0.5.RELEASE.jar
<bean id= "transactionManager" class= "org.springframework.orm.hibernate3.HibernateTransactionManager" >
        <property name ="sessionFactory" ref="sessionFactory" />2中hibernate的配置
</bean >
<bean id ="jdbcTemplate" class= "org.springframework.jdbc.core.simple.SimpleJdbcTemplate" >
        <constructor-arg ref ="dataSource" />
    操作數據庫 jdbc持久層開發 是spring對覺得不錯的封裝
</bean >
 4:各模塊所需事物的詳細配置(上邊是公共的事物配置)
<tx:advice id= "txAdvice" transaction-manager ="transactionManager">引入3中事物管理器
        <tx:attributes > 
            <tx:method name ="save*" propagation="REQUIRED"/>    propagetion 屬性有7種
            <tx:method name ="insert*" propagation="REQUIRED"/>
            <tx:method name ="update*" propagation="REQUIRED"/>
            <tx:method name ="merge*" propagation="REQUIRED"/>有就更新 沒有就插入
            <tx:method name ="delete*" propagation="REQUIRED"/>
            <tx:method name ="add*" propagation="REQUIRED"/>
            <tx:method name ="remove*" propagation="REQUIRED"/>
            <tx:method name ="match*" propagation="REQUIRED"/>
            <tx:method name ="confirm*" propagation="REQUIRED"/>
            <tx:method name ="run*" propagation="REQUIRED"/>
            <tx:method name ="import*" propagation="REQUIRED"/>
            <tx:method name ="export*" propagation="REQUIRED"/>
            <tx:method name ="dealWith*" propagation="REQUIRED"/>
            <tx:method name ="get*" propagation="REQUIRED" read-only= "true"/>
            <tx:method name ="find*" propagation="REQUIRED"  read-only= "true"/>
            <tx:method name ="search*" propagation="REQUIRED"  read-only= "true"/>
        </tx:attributes >
    </tx:advice >
5:manager的配置
             <bean id ="manager" class="com.holytax.base.service.BaseManager">
        <property name ="dao" ref="dao"/>
        <property name ="sqlDao" ref="iBatisDao"/>
    </bean >
    <bean id ="baseDao" class="com.holytax.base.dao.BaseDao">
        <property name ="sessionFactory" ref="sessionFactory"/>   
        <property name ="jdbcTemplate" ref="jdbcTemplate"/>       
    </bean >
             <bean id ="dao" class="com.holytax.base.dao.ComDao" parent= "baseDao"></bean >
             <bean id ="baseAction" class="com.holytax.base.action.BaseAction"></bean >
             <bean id ="proxyManager" class="com.holytax.base.service.ProxyManager"  parent= "manager"></bean >
             <bean id ="dbMgr" class="com.holytax.base.service.DBManager"  parent= "manager"></bean >
6:面向切面編程aop配置
<aop:config>
<aop:advisorid="managerTx"advice-ref="txAdvice"pointcut="execution(* *..service.*Manager.*(..))"order="0"/>
<aop:advisor id ="managerTxEx" advice-ref="txAdvice"pointcut="execution(* *..service..*Manager.*(..))"order= "1" </aop:config >
三:最後將.properties 和spring.xml文件注入總spring配置文件中(applicationContext.xml)
四:總結數據源配置步驟(基本上就按上述步驟配置)
1:在properties文件中配置數據庫(驅動 URL 用戶名 密碼)的參數, 連接池、 hibernate 的一些屬性值
2:在spring.xml文件中配置
     連接池(datesource  注入連接池相關類 在該類中配置相關屬性)
     hibernate屬性(注入sessionfactory相關類,將配置好的連接池datasource引入該類中 同時配置hibernate的相關屬性和一些其他設置        《動態映射表名 監聽》等)
     配置事物管理器(注入相關類 transactionManager  其中引入hibernate的sessionfactory和jdbc模板)
     配置各模塊事物 注入事物管理器中
     面向切面編程配置
3:將以上兩個文件注入spring總配置文件中applicationContext.xml
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章