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类,就可以完成数据库相关的操作了。
分享到:
相关推荐
在多数据源的场景下,Hibernate提供了灵活的数据源配置,可以在同一个应用中管理多个数据库连接。这通常通过定义不同的SessionFactory配置和DataSource实例来实现。 **MyBatis** 则是一个轻量级的ORM框架,它比...
总之,"spring3+springmvc+jpa+hibernate多数据源"项目展示了如何在一个复杂的Java Web应用中,利用Spring框架的灵活性和JPA的便利性,高效地管理多个数据库。这样的设置对于处理多样化数据存储需求的企业级应用来说...
本示例将探讨如何在Spring和Hibernate环境中实现多数据源的配置与管理。 首先,我们来看标题"Spring+Hibernate多数据源",这意味着我们要在一个项目中同时配置和使用两个数据源。通常,这涉及到创建两个不同的...
本示例主要介绍如何实现Spring Boot 2.0多数据源的集成,并结合Hibernate进行配置,特别是在DAO层使用`HibernateDaoSupport`进行操作,而非使用JPA(Java Persistence API)。 首先,让我们了解Spring Boot 2.0的...
综上所述,解决多数据源问题主要涉及对Spring与Hibernate整合配置的理解、装饰器设计模式的应用,以及动态数据源管理的实现。通过将这些知识点结合起来,开发人员可以灵活地为复杂业务需求下的应用配置和管理多个...
本知识点主要探讨如何在Spring中集成Hibernate来实现多数据源的动态切换功能,这对于需要处理多种数据源的应用来说至关重要。 首先,我们需要理解什么是多数据源。多数据源意味着一个应用程序可以连接并操作多个...
该配置文件连接的是两个数据库结构相同的数据源,其他比如数据库结构不原理也可行。本人在遇到此问题时上网搜了很多答案结果都不怎么如意,有的太深奥不过思想很好,有的又太不给力,后来自己慢慢研究配置成功后想与...
在多数据源环境中,Hibernate可以通过SessionFactory配置多个数据源,每个数据源对应一个SessionFactory。 3. **Atomikos**: Atomikos是一个开源的JTA(Java Transaction API)实现,提供分布式事务管理服务。在...
Spring框架作为一种流行的轻量级Java应用开发框架,提供了强大的数据库访问支持,其中包括对数据源的配置管理。数据源(DataSource)在Spring中的配置对于实现持久层操作至关重要。 #### 二、Spring中的数据源配置...
Hibernate 多数据库配置 在 Hibernate 中配置多数据库,并自由切换,可以使用 Spring 框架来实现。...使用 Spring 框架和 Hibernate,我们可以轻松地配置多数据库连接信息,并自由切换不同的数据源。
你需要在 Spring 配置文件中定义数据源 Bean,如使用 DriverManagerDataSource 或者 DataSourceProxy,提供连接数据库所需的 JDBC 配置信息。 4. **SessionFactory 创建**:使用 Spring 的 LocalSessionFactoryBean...
如果使用Spring Data JPA或Hibernate,数据源配置更为简单,因为它们会自动创建并管理数据源。Spring Data JPA通过`spring-boot-starter-data-jpa`依赖自动配置了JPA和HikariCP数据源。 总的来说,Spring提供了...
根据描述中的内容,我们可以将Hibernate中配置数据源的方式大致分为三种:直接在Hibernate配置文件中定义、通过外部配置文件指明数据源以及利用现有的容器管理的数据源。 #### 四、配置方法详解 ##### 1. 在...
"Spring3+Hibernate4+Maven+JUnit 多库多数据源实现"是一个典型的Java Web项目配置,它涉及了多个核心技术来处理复杂的数据管理需求。下面将详细阐述这些技术以及如何协同工作以实现多库多数据源。 首先,Spring...
总结来说,Spring结合JOTM和Hibernate进行多数据源事务管理,主要涉及以下几个步骤:配置JOTM依赖,定义XADataSource,创建并配置AtomikosTransactionManager,设定事务策略,以及正确地集成Hibernate ...
对于Hibernate,需要配置SessionFactory,可能还包括数据源、事务管理器等。 3. **配置Hibernate**:配置Hibernate的`hibernate.cfg.xml`文件,指定数据库连接参数,实体映射文件的位置,以及缓存策略。还需要在...
有了这些jar包,开发者就可以配置Spring和Hibernate的整合,实现数据源的管理,使用Hibernate的SessionFactory和Session进行数据库操作,同时利用Spring的事务管理功能确保数据的一致性。 在实际项目中,开发者通常...
3. **配置Spring**:在src/main/resources下创建applicationContext.xml文件,配置Spring的核心容器,包括Bean定义、数据源、事务管理器等。例如,使用DataSource来连接Oracle数据库,使用...
Spring框架则是一个全面的后端解决方案,提供依赖注入(DI)和面向切面编程(AOP)等核心特性,用于管理对象的生命周期和配置。在这个系统中,Spring可以管理Struts的动作类(Action)以及服务层(Service)的bean,...