spring 配置只读事务_只读副本和Spring Data第3部分:配置两个实体管理器
spring 配置只读事务
我们之前的设置可以正常工作。 我们现在要做的是进一步发展,并配置两个单独的实体管理器,而不会影响我们之前实现的功能。
第一步是将默认实体管理器配置设置为主要配置。
这是第一步
package com.gkatzioura.springdatareadreplica.config; import javax.sql.DataSource; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.jdbc.DataSourceBuilder; import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; import org.springframework.data.jpa.repository.config.EnableJpaRepositories; import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; @Configuration public class PrimaryEntityManagerConfiguration { @Value ( "${spring.datasource.username}" ) private String username; @Value ( "${spring.datasource.password}" ) private String password; @Value ( "${spring.datasource.url}" ) private String url; @Bean @Primary public DataSource dataSource() throws Exception { return DataSourceBuilder.create() .url(url) .username(username) .password(password) .driverClassName( "org.postgresql.Driver" ) .build(); } @Bean @Primary public LocalContainerEntityManagerFactoryBean entityManagerFactory( EntityManagerFactoryBuilder builder, @Qualifier ( "dataSource" ) DataSource dataSource) { return builder.dataSource(dataSource) .packages( "com.gkatzioura.springdatareadreplica" ) .persistenceUnit( "main" ) .build(); } }
如果您使用此配置运行您的应用程序,它将像之前的应用程序一样运行。
现在是时候配置只读实体管理器了。
package com.gkatzioura.springdatareadreplica.config; import javax.sql.DataSource; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.jdbc.DataSourceBuilder; import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Primary; import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; @Configuration public class ReadOnlyEntityManagerConfiguration { @Value ( "${spring.datasource.username}" ) private String username; @Value ( "${spring.datasource.password}" ) private String password; @Value ( "${spring.datasource.readUrl}" ) private String readUrl; @Bean public DataSource readDataSource() throws Exception { return DataSourceBuilder.create() .url(readUrl) .username(username) .password(password) .driverClassName( "org.postgresql.Driver" ) .build(); } @Bean public LocalContainerEntityManagerFactoryBean readEntityManagerFactory( EntityManagerFactoryBuilder builder, @Qualifier ( "readDataSource" ) DataSource dataSource) { return builder.dataSource(dataSource) .packages( "com.gkatzioura.springdatareadreplica" ) .persistenceUnit( "read" ) .build(); } }
另外,我将向控制器添加方法以保存模型。
package com.gkatzioura.springdatareadreplica.controller; import java.util.List; import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.bind.annotation.RestController; import com.gkatzioura.springdatareadreplica.entity.Employee; import com.gkatzioura.springdatareadreplica.repository.EmployeeRepository; @RestController public class EmployeeContoller { private final EmployeeRepository employeeRepository; public EmployeeContoller(EmployeeRepository employeeRepository) { this .employeeRepository = employeeRepository; } @GetMapping ( "/employee" ) public List<Employee> getEmployees() { return employeeRepository.findAll(); } @PostMapping ( "/employee" ) @ResponseStatus (HttpStatus.CREATED) @ResponseStatus (HttpStatus.CREATED) public void addEmployee( @RequestBody Employee employee) { employeeRepository.save(employee); } }
如果您确实尝试使用控制器添加员工,然后查询读取的数据库,您将看到根本没有添加任何条目。
因此,我们已启动并运行了主要的实体管理器,而我们还拥有了辅助的实体管理器。 第二个尚未使用。 下一个博客着重介绍使用辅助只读实体管理器。
翻译自: https://www.javacodegeeks.com/2019/10/read-replicas-and-spring-data-configuring-two-entity-managers.html
spring 配置只读事务
spring 配置只读事务_只读副本和Spring Data第3部分:配置两个实体管理器相关推荐
- 只读副本和Spring Data第3部分:配置两个实体管理器
我们之前的设置可以正常工作. 我们现在要做的是进一步发展,并配置两个单独的实体管理器,而不会影响我们之前实现的功能. 第一步是将默认的实体管理器配置设置为主要配置. 这是第一步 package com ...
- spring 配置只读事务_只读副本和Spring Data第1部分:配置数据库
spring 配置只读事务 这是有关我们为利用只读副本来提高应用程序性能而寻求的一系列博客文章. 对于这个项目,我们的目标是建立我们的spring数据应用程序,并使用read仓库进行写操作,并基于re ...
- jooq 事务_将jOOQ与Spring结合使用:排序和分页
jooq 事务 JOOQ是一个库,可以帮助我们控制SQL. 它可以从我们的数据库生成代码,并允许我们使用其流畅的API来构建类型安全的数据库查询. 本教程前面的部分向我们介绍了如何配置应用程序的应用程 ...
- jdbctemplate 开启事务_来,讲讲Spring事务有哪些坑?
来自公众号:孤独烟 引言 今天,我们接上文<面试官:谈谈你对mysql事务的认识>的内容,来讲spring中和事务有关的考题! 因为事务这块,面试的出现几率很高.而大家工作中CRUD的比较 ...
- webmvcconfigurer配置跨域_为什么加了 Spring Security 会导致 Spring Boot 跨域失效呢?...
点击上方 IT牧场 ,选择 置顶或者星标 技术干货每日送达 作者:欧阳我去 链接:https://segmentfault.com/a/1190000019485883 作为一个后端开发,我们经常遇到 ...
- Spring中的事务控制(Transacion Management with Spring)
1.1. 有关事务(Transaction)的楔子 1.1.1. 认识事务本身1.1.2. 初识事务家族成员 1.2. 群雄逐鹿下的Java事务管理 1.2.1. Java平台的局部事务支持1.2.2 ...
- 小马哥spring编程核心思想_极客小马哥Spring核心编程思想
42 | 依赖查找的今世前生:Spring IoC容器从Java标准中学到了什么? 43 | 单一类型依赖查找:如何查找已知名称或类型的Bean对象? 44 | 集合类型依赖查找:如何查找已知类型多个 ...
- cisco 模拟器安装及交换机的基本配置实验心得_网络工程师的Python之路 -- 自动监测网络配置变化...
版权声明:我已加入"维权骑士"(http://rightknights.com)的版权保护计划,所有知乎专栏"网路行者"下的文章均为我本人(知乎ID:弈心)原创 ...
- spring aop实例讲解_小实例理解Spring中的AOP----面向切面编程
关于面向切面编程(Spring AOP),是在java面试中经常提及的,只有在充分理解了,日常工作中才能得心应手. 如何理解AOP呢?首先我们要思考为什么要使用切面编程,如下图: 对于一个系统来说保存 ...
最新文章
- 80行代码搞定某电影网站所有的下载资源
- zookeeper安装( windows环境)
- rip协议中周期性广播路由信息的报文_距离矢量路由协议(RIP)
- how is Java Bean object created
- 【通信原理课程设计】8PSK调制解调技术的设计与仿真(MATLAB)
- 腾讯云ubuntu18安装图形化界面
- 用python可以画的可爱的图形_利用Python绘制诱人的桑基图
- linux子系统 显卡,bash 漏洞?linux授权命令sudo?windows linux子系统?新手理解的bash环境变量解析漏洞...
- Python元组 ()
- eclipse安装程序无法启动
- 图像拼接——APAP算法
- 努比亚 N2(Nubia NX575J) 解锁BootLoader 并进入临时recovery ROOT
- 实验七 动态分区分配方式的模拟
- 软件工作的量化考核有办法吗?
- [SSL_CHX][2021-8-18]取余
- 操作系统——并发相关问题
- ACM算法训练赛——STL(完结)
- ssm+Vue计算机毕业设计学科竞赛赛场安排系统(程序+LW文档)
- Java中for循环的用法(亲测)
- 相遇,是天意; 相守,是人意
热门文章
- P2157 [SDOI2009]学校食堂
- 牛客网【每日一题】5月19日题目精讲 比赛
- Matrix(二维hash)
- [HEOI2016TJOI2016]排序(二分+线段树)
- 数据结构一【树状数组】普通、二维、离线树状数组的(单点修改,单点查询,区间修改,区间查询)模板及应用例题总结
- AT2005-[AGC003E]Sequential operations on Sequence【差分,思维】
- P4026-[SHOI2008]循环的债务【dp】
- P4317-花神的数论题【组合数学】
- P5091-[模板]欧拉定理
- jzoj4231-寻找神格【线段树,数学】