`
weir2009
  • 浏览: 265822 次
  • 性别: Icon_minigender_1
  • 来自: 惠州
社区版块
存档分类
最新评论

spring 4 + jpa(hibernate 3/4) + spring mvc 多数据源配置(二)+Druid连接池

阅读更多

接上一个博文,没有数据库连接池,纯粹用jpa的官方链接。

所以这次要加上连接池本文用Druid连接池来实现多数据源的配置。

persistence.xml 这个文件可以省略了,全部配置在applicationContext.xml 里面:

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:jpa="http://www.springframework.org/schema/data/jpa"
	xmlns:mvc="http://www.springframework.org/schema/mvc"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:util="http://www.springframework.org/schema/util"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.1.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd
		http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd
		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.1.xsd
		http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.1.xsd
		http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.2.xsd">
	
	<context:annotation-config/>
	<context:component-scan base-package="com.tw"/>
	
	<!-- mysql数据源配置 -->
    <bean id="mysqlDataSource" class="com.alibaba.druid.pool.DruidDataSource"
        init-method="init" destroy-method="close">
        <!-- 驱动名称 -->
        <property name="DriverClassName" value="com.mysql.jdbc.Driver" />
        <!-- JDBC连接串 -->
        <property name="url"
            value="jdbc:mysql://192.168.132.1:3306/twq?useUnicode=true&amp;characterEncoding=UTF-8" />
        <!-- 数据库用户名称 -->
        <property name="username" value="ws" />
        <!-- 数据库密码 -->
        <property name="password" value="unionmanws" />
        <!-- 连接池最大使用连接数量 -->
        <property name="maxActive" value="20" />
        <!-- 初始化大小 -->
        <property name="initialSize" value="5" />
        <!-- 获取连接最大等待时间 -->
        <property name="maxWait" value="60000" />
        <!-- 连接池最小空闲 -->
        <property name="minIdle" value="2" />
        <!-- 逐出连接的检测时间间隔 -->
        <property name="timeBetweenEvictionRunsMillis" value="3000" />
        <!-- 最小逐出时间 -->
        <property name="minEvictableIdleTimeMillis" value="300000" />
        <!-- 测试有效用的SQL Query -->
        <property name="validationQuery" value="SELECT 'x'" />
        <!-- 连接空闲时测试是否有效 -->
        <property name="testWhileIdle" value="true" />
        <!-- 获取连接时测试是否有效 -->
        <property name="testOnBorrow" value="false" />
        <!-- 归还连接时是否测试有效 -->
        <property name="testOnReturn" value="false" />
    </bean>
	
  	<!-- 整合mysqljpa -->
  	<bean id="mysqlEntityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
  	    <property name="dataSource" ref="mysqlDataSource"></property>
  		<property name="packagesToScan" value="com.tw.entity.sys"></property>
  		<property name="persistenceUnitName" value="mysqldb"></property>
  		<property name="jpaVendorAdapter">
  			<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
  				<property name="showSql" value="true"></property>
  			</bean>
  		</property>
  		<property name="jpaProperties">
            <props>
                <!--设置外连接抓取树的最大深度 -->
                <prop key="hibernate.max_fetch_depth">3</prop>
                <prop key="hibernate.jdbc.fetch_size">18</prop>
                <prop key="hibernate.jdbc.batch_size">10</prop>
                <!-- 自动建表类型 validate|create|create-drop|update -->
                <!-- <prop key="hibernate.hbm2ddl.auto">validate</prop> -->
                <!-- 是否显示SQL -->
                <prop key="hibernate.show_sql">false</prop>
                <!-- 显示SQL是否格式化 -->
                <prop key="hibernate.format_sql">false</prop>
                <!-- 关闭二级缓存 -->
                <prop key="hibernate.cache.provider_class">org.hibernate.cache.NoCacheProvider</prop>
                <!-- 关闭实体字段映射校验 -->
                <prop key="javax.persistence.validation.mode">none</prop>
            </props>
        </property>
  	</bean>
  	<bean id="mysqltransactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
    	<property name="entityManagerFactory" ref="mysqlEntityManagerFactory" />
    	<qualifier value="mysqlEM"/>
  	</bean>
	<tx:annotation-driven transaction-manager="mysqltransactionManager" proxy-target-class="false"/>	
  	
  	
  	<!-- sqlserver数据源配置 -->
    <bean id="sqlserverDataSource" class="com.alibaba.druid.pool.DruidDataSource"
        init-method="init" destroy-method="close">
        <!-- 驱动名称 -->
        <property name="DriverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" />
        <!-- JDBC连接串 -->
        <property name="url"
            value="jdbc:sqlserver://192.168.130.10:1433;DatabaseName=unionman" />
        <!-- 数据库用户名称 -->
        <property name="username" value="sa" />
        <!-- 数据库密码 -->
        <property name="password" value="123abc" />
        <!-- 连接池最大使用连接数量 -->
        <property name="maxActive" value="20" />
        <!-- 初始化大小 -->
        <property name="initialSize" value="5" />
        <!-- 获取连接最大等待时间 -->
        <property name="maxWait" value="60000" />
        <!-- 连接池最小空闲 -->
        <property name="minIdle" value="2" />
        <!-- 逐出连接的检测时间间隔 -->
        <property name="timeBetweenEvictionRunsMillis" value="3000" />
        <!-- 最小逐出时间 -->
        <property name="minEvictableIdleTimeMillis" value="300000" />
        <!-- 测试有效用的SQL Query -->
        <property name="validationQuery" value="SELECT 'x'" />
        <!-- 连接空闲时测试是否有效 -->
        <property name="testWhileIdle" value="true" />
        <!-- 获取连接时测试是否有效 -->
        <property name="testOnBorrow" value="false" />
        <!-- 归还连接时是否测试有效 -->
        <property name="testOnReturn" value="false" />
    </bean>
  	
  	<!-- 整合sqlserverjpa -->
  	<bean id="sqlserverEntityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
  	    <property name="dataSource" ref="sqlserverDataSource"></property>
  		<property name="packagesToScan" value="com.tw.entity.plan"></property>
  		<property name="persistenceUnitName" value="sqlserverdb"></property>
  		<property name="jpaVendorAdapter">
  			<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
  				<property name="showSql" value="true"></property>
  			</bean>
  		</property>
  		<property name="jpaProperties">
            <props>
                <!--设置外连接抓取树的最大深度 -->
                <prop key="hibernate.max_fetch_depth">3</prop>
                <prop key="hibernate.jdbc.fetch_size">18</prop>
                <prop key="hibernate.jdbc.batch_size">10</prop>
                <!-- 自动建表类型 validate|create|create-drop|update -->
                <!-- <prop key="hibernate.hbm2ddl.auto">validate</prop> -->
                <!-- 是否显示SQL -->
                <prop key="hibernate.show_sql">false</prop>
                <!-- 显示SQL是否格式化 -->
                <prop key="hibernate.format_sql">false</prop>
                <!-- 关闭二级缓存 -->
                <prop key="hibernate.cache.provider_class">org.hibernate.cache.NoCacheProvider</prop>
                <!-- 关闭实体字段映射校验 -->
                <prop key="javax.persistence.validation.mode">none</prop>
            </props>
        </property>
  	</bean>
  	<bean id="sqlservertransactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
    	<property name="entityManagerFactory" ref="sqlserverEntityManagerFactory" />
    	<qualifier value="sqlserverEM"/>
  	</bean>
	<tx:annotation-driven transaction-manager="sqlservertransactionManager" proxy-target-class="false"/>	

</beans>

其他地方按上次的配置不需要做改动。这样就好了。

文章转载自:www.loveweir.com

分享到:
评论
1 楼 mimi0359 2017-10-25  
哥们我们原来有两个项目,两个数据库,都是通过jpa接口写的,然后使用<jpa:repositories base-package="要扫描的dao接口包名称">的方式生成dao接口的代理类的,现在要合并为一个项目,需要配置为多数据源的方式,这种怎么处理啊?

相关推荐

    maven3.3.9-spring4.3.10-Struts2 2.3.34-hibernate4.3.10+easyUI1.5.3

    5. 连接数据库,配置数据库连接池,如C3P0或Druid。 6. 使用EasyUI创建前端页面,与后端Controller进行交互,实现数据的展示和操作。 这个项目中的"YFKsshe-maven3.3.9-spring4.3.10-Struts2 2.3.34-hibernate...

    springmvc+spring+mybatis集成框架的环境搭建

    这里推荐使用 Druid 作为数据库连接池,并通过 Spring 的配置文件来管理数据源和其他组件的配置。 **1. Druid 连接池:** ```xml &lt;groupId&gt;com.alibaba&lt;/groupId&gt; &lt;artifactId&gt;druid&lt;/artifactId&gt; &lt;version&gt;...

    java面试问题-spring框架相关.docx

    在 Spring 中,可以通过配置数据源 Bean 来使用连接池。 4. **AOP(面向切面编程)** Spring 的 AOP 支持在运行时动态地将代码插入到其他对象中,常用于事务管理、日志记录、权限检查等。在配置文件中,可以定义切...

    springboot-demo:原始的主要学习SpringBoot项目构建,内容包括AOP,异常捕获,SpringSecurity,Swagger-UI,Filter,Listener,HttpServlet,CommandLineRunner,注释,配置属性,数据库采用MySQL,持久层使用Spring Data JPA,数据源采用阿里巴巴druid数据源,并实现druid监控配置

    13. **Druid数据源**:Druid是阿里巴巴提供的高性能数据库连接池,提供了监控、SQL解析、拦截器等功能,可以提高数据库访问性能并提供丰富的监控信息。 在"springboot-demo"项目中,开发者不仅学习了如何搭建一个...

    springSecurityOauth2

    4. **Druid**: Druid是阿里巴巴开源的一个数据库连接池组件,它提供了监控、扩展性和性能优化等功能。在Spring Boot应用中,Druid可以作为数据源,确保高效地管理和使用数据库连接。 5. **JPA (Java Persistence ...

    ssh整合案例

    同时,为了提高性能,我们通常会引入其他工具和库,如C3P0或Druid作为数据库连接池,使用MyBatis进行更灵活的SQL操作,或者使用Spring Data JPA简化JPA操作。 通过SSH整合,开发者能够构建出结构清晰、易于维护的...

    项目架构设计1

    在这个项目中,我们采用了多种技术和框架来构建一个完整的系统,包括控制层、数据持久化层、服务层、数据库管理、安全认证、流程控制、缓存管理、数据源与连接池、日志记录、作业调度以及在线支付功能。 首先,控制...

    SSH.rar_ssh_ssh web_ssh 源码_ssh框架配置_ssh项目

    4. 数据库连接池配置:如C3P0、Druid等,这些配置通常也在Spring的配置文件中。 SSH项目的开发过程中,开发者需要编写Action类来处理业务逻辑,实体类来表示数据库中的表,以及DAO(Data Access Object)层来封装...

    springmvc web项目

    10. **数据库配置**:Spring MVC项目通常会包含数据库连接池配置,如Druid或HikariCP,以及JDBC或JPA的相关配置,用于连接和操作数据库。 在提供的文件名称"springmvc3"中,我们可以推测这是一个Spring MVC项目的第...

    ssh整合.rar

    Hibernate 5.0.0引入了更多的JPA2.1规范支持,优化了查询性能,增强了对多数据源的支持,使得数据库操作更为便捷。 Oracle驱动包则是连接到Oracle数据库所必需的,它允许SSH框架中的应用程序通过JDBC与Oracle数据库...

    基于springboot的美食分享管理平台(部署文档+表结构文档) Javaee项目,springboot项目

    - 数据库连接池,如HikariCP或Druid,提高数据库连接的复用性。 - 使用MyBatis或JPA进行SQL操作,通过Repository接口封装数据访问层。 4. **安全控制** - Spring Security是Spring官方提供的安全框架,负责认证...

    SpringBoot .yml

    ### Spring Boot .yml 配置详解 #### 一、概览 在现代Java开发中,Spring Boot凭借其“约定优于配置”的理念极大地简化了应用的搭建与部署过程。其中,`application.yml`文件作为Spring Boot项目的配置文件之一,...

    demo工程列表说明1

    29. **JdbcTemplate**:jdbctemplateex展示了Spring MVC中JdbcTemplate的多数据源配置,JdbcTemplate是Spring提供的简化JDBC操作的工具。 30. **JDIC(Java Desktop Integration Components)**:jdicdemo说明了...

    sshweb.rar SSH三大框架 新手学习

    Druid数据源是阿里巴巴开源的一个高性能数据库连接池组件,它不仅提供了连接池功能,还集成了监控、SQL解析、日志等功能,能够帮助开发者更好地管理和优化数据库连接,提高系统性能。 这个“sshweb”项目显然是一位...

    ssm框架所需jar包

    2. **druid-1.1.6.jar**:Druid是一个强大的数据库连接池组件,提供监控、扩展性以及更好的性能。在SSM项目中,Druid通常作为数据源,负责管理数据库连接,提高数据库操作的效率。 3. **aspectjweaver-1.8.8.jar**...

    全套SpringBoot入门到项目实战课程.zip

    - **数据源配置**:包括连接池配置,如Druid、HikariCP等。 5. **安全控制** - **Spring Security**:Spring官方的安全框架,提供认证与授权功能。 - **JWT**:JSON Web Tokens,用于无状态的身份验证。 - **...

    框架面试笔试问答题.docx

    - **配置数据源**:通常使用Druid或C3P0等数据连接池。 - **配置SqlSessionFactory**:通过SqlSessionFactoryBean来配置,指定数据源和Mapper接口的位置。 - **编写Mapper接口**:定义SQL语句的接口方法,由MyBatis...

    基于Android安卓的停车系统源码数据库.zip

    - 数据库连接池如HikariCP或Druid用于优化数据库连接管理,提高性能。 6. **集成测试**: - 使用JUnit或Espresso进行单元测试和UI测试,确保各个功能模块的正确性。 - 通过Mockito等工具模拟外部依赖,进行集成...

Global site tag (gtag.js) - Google Analytics