Spring的DataSource配置、將Hibernate配置全部寫到Spring配置

藍星花發表於2017-12-06
DataSource可以集中管理資料庫連線,減少維護工作量,使部署更簡單;
Spring的DataSource配置:(Spring資料來源配置)這裡使用dbcp,還有很多其他的如c3p0,jdbc,jndi等
DataSource和定義普通Bean一樣,指定id、類別,注入屬性;
站點停止時,應該呼叫DataSource的close方法,通過destroy-method屬性配置實現;

1,在Spring配置檔案配置DataSource的bean:

[html] view plain copy
  1. <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">  
  2.     <property name="username" value="${jdbc.username}"></property>  
  3.     <property name="password" value="${jdbc.password}"></property>  
  4.     <property name="url" value="${jdbc.url}"></property>  
  5.     <property name="driverClassName" value="${jdbc.driver}" ></property>  
  6. </bean>  

class="org.apache.commons.dbcp.BasicDataSource" :是DataSource實現類
配置SessionFactory ,注入:

[html] view plain copy
  1. <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">  
  2.         <!-- <property name="configLocation" value="classpath:hibernate.cfg.xml"></property> -->  
  3.         <!-- 注入一個DataSource -->  
  4.         <property name="dataSource" ref="dataSource"></property>   
  5.     </bean>  

2,資料庫連線資訊寫在屬性檔案中,在src新建配置檔案:jdbc.properties

[html] view plain copy
  1. jdbc.driver = com.mysql.jdbc.Driver  
  2. jdbc.url = jdbc:mysql://127.0.0.1:3306/jboa  
  3. jdbc.username = root  
  4. jdbc.password = jerome  
在Spring配置檔案引入jdbc.properties配置檔案,採用PropertyPlaceholderConfigurer可以引入屬性檔案,在Spring配置檔案中採用${jdbc.url}的方式引用屬性值

[html] view plain copy
  1. <bean id="DBconfig" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  
  2.         <property name="locations">  
  3.             <value>classpath:jdbc.properties</value>  
  4.         </property>  
  5.     </bean>  
接下來可以把一下的Hibernat的配置資料連線資訊註釋:

[html] view plain copy
  1. <property name="connection.url">jdbc:mysql://127.0.0.1:3306/jboa</property>  
  2. <property name="connection.username">root</property>  
  3. <property name="connection.password">jerome</property>  
  4. <property name="connection.driver_class">com.mysql.jdbc.Driver</property>   
3,配置hibernateProperties屬性,用到了Property型別的屬性的配置配置SessionFactory :

[html] view plain copy
  1. <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">  
  2.     <!-- <property name="configLocation" value="classpath:hibernate.cfg.xml"></property> -->  
  3.     <!-- 注入一個DataSource -->  
  4.     <property name="dataSource" ref="dataSource"></property>  
  5.     <property name="hibernateProperties">  
  6.         <props>  
  7.             <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>  
  8.             <prop key="hibernate.hbm2ddl.auto">false</prop>  
  9.             <prop key="hibernate.show_sql">true</prop>  
  10.         </props>  
  11.     </property>  
  12. </bean>  
Hibernate可以註釋:

[html] view plain copy
  1. <property name="dialect">org.hibernate.dialect.MySQLDialect</property>  
  2. <property name="hbm2ddl.auto">false</property>  
  3. <property name="show_sql">true</property>  
5,通過mappingDirectoryLocations 或者mappingLocations屬性配置對映檔案位置,把所有的資原始檔引進Spring配置:配置SessionFactory

[html] view plain copy
  1. <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">  
  2.         <!-- <property name="configLocation" value="classpath:hibernate.cfg.xml"></property> -->  
  3.         <!-- 注入一個DataSource -->  
  4.         <property name="dataSource" ref="dataSource"></property>  
  5.         <property name="hibernateProperties">  
  6.             <props>  
  7.                 <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>  
  8.                 <prop key="hibernate.hbm2ddl.auto">false</prop>  
  9.                 <prop key="hibernate.show_sql">true</prop>  
  10.             </props>  
  11.         </property>  
  12.           
  13.         <property name="mappingResources">  
  14.             <list>  
  15.                 <value>com/jboa/model/Account.hbm.xml</value>  
  16.                 <value>com/jboa/model/CheckResult.hbm.xml</value>  
  17.                 <value>com/jboa/model/ClaimVoucher.hbm.xml</value>  
  18.                 <value>com/jboa/model/ClaimVoucherDetail.hbm.xml</value>  
  19.                 <value>com/jboa/model/Department.hbm.xml</value>  
  20.                 <value>com/jboa/model/Dictionary.hbm.xml</value>  
  21.                 <value>com/jboa/model/Employee.hbm.xml</value>  
  22.                 <value>com/jboa/model/Postion.hbm.xml</value>  
  23.             </list>  
  24.         </property>  
DataSource指定一個方法關閉:

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
配置好了。Hibernate可以刪除了;執行測試成功

相關文章