`
return_space
  • 浏览: 20052 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

spring管理hibernate多数据源的配置

阅读更多

spring 是一个很强大的框架,可以完成很多的任务,这公司这次项目中,我使用到了spring的数据源配置,定时调度任务,事务处理等

    我会在使用相关的文章来阐述这些使用了,也相当于总结一下!

    这篇文章我将讲解spring管理hibernate多数据源的配置。

    我们先来看看spring的applicationContext.xml配置文件

 

  <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  <property name="locations">
   <list>
    <value>classpath:datasource.properties</value>
   </list>
  </property>
 </bean>
  <!-- 中间表的数据源-->
  <bean id="dataSourceMysql" class="org.apache.commons.dbcp.BasicDataSource">
  
  <property name="driverClassName" value="${jdbc.driverClassName}"/>
  <property name="url" value="${jdbc.url}"/>
  <property name="username" value="${jdbc.username}"/>
  <property name="password" value="${jdbc.password}"/>
  
   
  <property name="initialSize" value="${pool.initialSize}" />
  <property name="maxActive" value="${pool.maxActive}" />
  <property name="maxIdle" value="${pool.maxIdle}" />
  <property name="maxWait" value="${pool.maxWait}" />
  <property name="poolPreparedStatements" value="${pool.poolPreparedStatements}" />
  <property name="defaultAutoCommit" value="${pool.defaultAutoCommit}" />
 </bean>
 <bean id="sessionFactoryMysql" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
  <property name="dataSource">
   <ref bean="dataSourceMysql"/>
  </property>
  <property name="hibernateProperties">
   <props>
    <prop key="hibernate.dialect">
     ${hibernate.dialectMysql}
    </prop>
    <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
    <prop key="hibernate.format_sql">${hibernate.format_sql}</prop>
    <prop key="hibernate.use_sql_comments">${hibernate.use_sql_comments}</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>
    <prop key="hibernate.cache.provider_configuration_file_resource_path">${hibernate.ehcache_config_file}</prop>
   </props>
  </property>
  
  
  <property name="mappingResources">
   <list>
    <value>com/mytest/bean/Incident.hbm.xml</value>
    </list>
  </property>
 </bean>
 
 
 
 <!-- itsm -->
  <bean id="dataSourceItsm" class="org.apache.commons.dbcp.BasicDataSource">
  
  <property name="driverClassName" value="${itsm.driverClassName}"/>
  <property name="url" value="${itsm.url}"/>
  <property name="username" value="${itsm.username}"/>
  <property name="password" value="${itsm.password}"/>
  
   
  <property name="initialSize" value="${pool.initialSize}" />
  <property name="maxActive" value="${pool.maxActive}" />
  <property name="maxIdle" value="${pool.maxIdle}" />
  <property name="maxWait" value="${pool.maxWait}" />
  <property name="poolPreparedStatements" value="${pool.poolPreparedStatements}" />
  <property name="defaultAutoCommit" value="${pool.defaultAutoCommit}" />
 </bean>

 
 <bean id="sessionFactoryItsm" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
  <property name="dataSource">
   <ref bean="dataSourceItsm"/>
  </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.use_sql_comments">${hibernate.use_sql_comments}</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>
    <prop key="hibernate.cache.provider_configuration_file_resource_path">${hibernate.ehcache_config_file}</prop>
   </props>
  </property>
    <property name="mappingResources">
   <list>
    <value>com/mytest/bean/Incident.hbm.xml</value>
   </list>
  </property>
 </bean>

 

 

上面使用了PropertyPlaceHolderConfigurer ,这个类可以使spring的配置文件的数据来动态获取,如:<property name="driverClassName" value="${jdbc.driverClassName}"/>其中jdbc.driverClassName的值从哪来的呢?

它定义在 datasource.properties中各文件中,它的内容为:

 

## JDBC  Mysql properties
jdbc.datasourceName=itsm
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/itsm
jdbc.username=root
jdbc.password=fansichi

## ITSM  JDBC properties
itsm.datasourceName=ITSM
itsm.driverClassName=com.microsoft.jdbc.sqlserver.SQLServerDriver
itsm.url=jdbc:microsoft:sqlserver://192.168.0.91:1433;DatabaseName=Test
itsm.username=sa
itsm.password=sa

#pool properties
pool.initialSize=5
pool.maxActive=100
pool.maxIdle=30
pool.maxWait=1000
pool.poolPreparedStatements=true
pool.defaultAutoCommit=false

## Hibernate properties

hibernate.dialectMysql=org.hibernate.dialect.MySQLDialect
hibernate.dialect=org.hibernate.dialect.SQLServerDialect
hibernate.show_sql=true
hibernate.format_sql=true
hibernate.use_sql_comments=true
hibernate.cache.provider_class=org.hibernate.cache.EhCacheProvider
hibernate.cache.use_query_cache=true;
hibernate.ehcache_config_file=/ehcache/ehcache-hibernate-local.xml

 

 

上面其他的的属性的值 也是通过这种方式获取的

上面配置了两个datasource:datasourceMysql和datasourceItsm  她们对应的sessionFactory 分别是:sessionFactoryMysql 和sessionFactoryItsm,记住一点这spring中是不应许bean的id值相同的,所以我们起了两个不同的名字来命名这两个sessionFactory.

有了sessionFactory我们就可以注入到继承了HibernateTemplate类的dao类,就可以完成数据库相关的操作了。

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics