当前位置: 首页 > news >正文

spring-data-jpa 多数据源

 

Spring 对 JPA 的支持已经非常强大,开发者只需关心核心业务逻辑的实现代码,无需过多关注 EntityManager 的创建、事务处理等 JPA 相关的处理,这基本上也是作为一个开发框架而言所能做到的极限了。然而,Spring 开发小组并没有止步,他们再接再厉,于最近推出了 Spring Data JPA 框架,主要针对的就是 Spring 唯一没有简化到的业务逻辑代码,至此,开发者连仅剩的实现持久层业务逻辑的工作都省了,唯一要做的,就只是声明持久层的接口,其他都交给 Spring Data JPA 来帮你完成!

 

废话不多说 具体的来跟大家聊聊spring data jpa 的多数据源问题:

1.需要配置多个数据源:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0"
xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">

<persistence-unit name="o2o_platform" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" />
<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" />
<property name="hibernate.connection.username" value="nsh" />
<property name="hibernate.connection.password" value="" />
<property name="hibernate.connection.url" value="" />
<property name="hibernate.max_fetch_depth" value="3" /><!--设置外连接抓取树的最大深度 -->
<property name="hibernate.hbm2ddl.auto" value="none" /><!--自动输出schema创建DDL语句 -->
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.format_sql" value="true" />
<property name="javax.persistence.validation.mode" value="none" />

<!-- hibernate的c3p0连接池配置 -->
<property name="hibernate.connection.provider_class" value="org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider" />
<property name="hibernate.c3p0.min_size" value="5" /><!-- 最小连接数 -->
<property name="hibernate.c3p0.max_size" value="500" /><!-- 最大连接数-->
<property name="hibernate.c3p0.timeout" value="200" /><!-- 获得连接的超时时间,如果超过这个时间,会抛出异常,单位秒-->
<property name="hibernate.c3p0.max_statements" value="30" /><!-- 最大的PreparedStatement的数量(以前100,网上提出的方案,让减少。YYQ)-->
<property name="hibernate.c3p0.idle_test_period" value="60" /><!-- 每隔120秒检查连接池里的空闲连接 ,单位是秒(以前120,设置小了用于更快频率检查空闲的连接YYQ)-->
<property name="hibernate.c3p0.acquire_increment" value="2" /><!-- 当连接池里面的连接用完的时候,C3P0一下获取的新连接数-->
</properties>
</persistence-unit>
<persistence-unit name="nsh_dls" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" />
<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" />
<property name="hibernate.connection.username" value="nsh" />
<property name="hibernate.connection.password" value="" />
<property name="hibernate.connection.url" value="" />
<property name="hibernate.max_fetch_depth" value="3" /><!--设置外连接抓取树的最大深度 -->
<property name="hibernate.hbm2ddl.auto" value="none" /><!--自动输出schema创建DDL语句 -->
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.format_sql" value="true" />
<property name="javax.persistence.validation.mode" value="none" />

<!-- hibernate的c3p0连接池配置 -->
<property name="hibernate.connection.provider_class" value="org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider" />
<property name="hibernate.c3p0.min_size" value="5" /><!-- 最小连接数 -->
<property name="hibernate.c3p0.max_size" value="500" /><!-- 最大连接数-->
<property name="hibernate.c3p0.timeout" value="200" /><!-- 获得连接的超时时间,如果超过这个时间,会抛出异常,单位秒-->
<property name="hibernate.c3p0.max_statements" value="30" /><!-- 最大的PreparedStatement的数量(以前100,网上提出的方案,让减少。YYQ)-->
<property name="hibernate.c3p0.idle_test_period" value="60" /><!-- 每隔120秒检查连接池里的空闲连接 ,单位是秒(以前120,设置小了用于更快频率检查空闲的连接YYQ)-->
<property name="hibernate.c3p0.acquire_increment" value="2" /><!-- 当连接池里面的连接用完的时候,C3P0一下获取的新连接数-->
</properties>
</persistence-unit>
</persistence>

 

2、spring 中配置entityManagerFactory

<!-- 定义实体管理器工厂 -->
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceUnitName" value="o2o_platform" />
</bean>

<bean id="dlsentityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceUnitName" value="nsh_dls" />
</bean>

 

3、<!-- 配置事务管理器 -->

<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<bean id="dlstransactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="dlsentityManagerFactory" />
</bean>

 

4、<!-- 启用 annotation事务 -->

<tx:annotation-driven transaction-manager="transactionManager" />

<tx:annotation-driven transaction-manager="dlstransactionManager" />

 

5、<!-- 配置Spring Data JPA扫描目录 -->

<jpa:repositories base-package="com.snail.mobile.nsh.res.nsh_dls" (此处扫描的包,是entityManagerFactory数据源下的)  entity-manager-factory-ref="entityManagerFactory" transaction-manager-ref="transactionManager"/>

<jpa:repositories base-package="com.snail.mobile.nsh.res.dls_account"(此处扫描的包,是dlsentityManagerFactory数据源下的)  entity-manager-factory-ref="dlsentityManagerFactory" transaction-manager-ref="dlstransactionManager"/>

 

转载于:https://www.cnblogs.com/duxjin/p/5113449.html

相关文章:

  • 利用partial关键字声明分部类和分部方法
  • linux下搭建LAMP
  • 整洁的测试遵循的规则
  • server配置学习 ---- 关闭防火墙
  • 第一章 C++编程基础
  • DataBind()方法实现数据绑定
  • Qt 和 Boost关于信号和槽的对比说明
  • APT典型应用示例
  • 20160119--进销存系统分析
  • Swift教程之typealias代替OC的typedef
  • 安装XAMPP
  • ubuntu15.10安装 jdk
  • 属性与字段的区别
  • 使用OGGquot;Loading data from file to Replicatquot;的方法应该注意的问题:replicat进程是前台进程...
  • java 单例模式总结
  • .pyc 想到的一些问题
  • 【140天】尚学堂高淇Java300集视频精华笔记(86-87)
  • CentOS 7 修改主机名
  • C学习-枚举(九)
  • go append函数以及写入
  • input的行数自动增减
  • oldjun 检测网站的经验
  • PHP的类修饰符与访问修饰符
  • Sequelize 中文文档 v4 - Getting started - 入门
  • 高性能JavaScript阅读简记(三)
  • 工作手记之html2canvas使用概述
  • 今年的LC3大会没了?
  • 盘点那些不知名却常用的 Git 操作
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
  • 事件委托的小应用
  • 微服务核心架构梳理
  • 为视图添加丝滑的水波纹
  • 小试R空间处理新库sf
  • 原生JS动态加载JS、CSS文件及代码脚本
  • 关于Kubernetes Dashboard漏洞CVE-2018-18264的修复公告
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • ​中南建设2022年半年报“韧”字当头,经营性现金流持续为正​
  • #if 1...#endif
  • #NOIP 2014# day.1 T2 联合权值
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (附源码)springboot太原学院贫困生申请管理系统 毕业设计 101517
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (九十四)函数和二维数组
  • (理论篇)httpmoudle和httphandler一览
  • (转)C语言家族扩展收藏 (转)C语言家族扩展
  • (轉貼) 寄發紅帖基本原則(教育部禮儀司頒布) (雜項)
  • .NET CORE Aws S3 使用
  • .NET 药厂业务系统 CPU爆高分析
  • .Net高阶异常处理第二篇~~ dump进阶之MiniDumpWriter
  • .NET设计模式(11):组合模式(Composite Pattern)
  • .net图片验证码生成、点击刷新及验证输入是否正确
  • .sh文件怎么运行_创建优化的Go镜像文件以及踩过的坑