JAVA数据库操作二(多个数据库操作+Spring data + jpa)
来源:互联网 发布:樱空释冰焰特效软件 编辑:程序博客网 时间:2024/06/06 08:32
缺的文件请参考上一篇文章http://blog.csdn.net/makefriend7/article/details/53941458
本文我们将主要实现同时操作两个数据库,(oracle 和mysql)
当然为了展示技巧,本文将以java配置为主
首先是daoContext.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:jdbc="http://www.springframework.org/schema/jdbc" xmlns:c="http://www.springframework.org/schema/c" xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p" xmlns:jpa="http://www.springframework.org/schema/data/jpa" xsi:schemaLocation="http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.1.xsdhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.0.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd"><bean class = "db.MyConfig"/><bean class = "mysqldb.MySqlConfig"/></beans>
好吧。其实有用的就两行。
oralce的配置文件就MyConfig 内容如下
package db;import com.mysql.cj.jdbc.MysqlDataSource;import oracle.jdbc.pool.OracleDataSource;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.data.jpa.repository.config.EnableJpaRepositories;import org.springframework.orm.jpa.JpaTransactionManager;import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;import org.springframework.orm.jpa.vendor.Database;import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;import org.springframework.transaction.annotation.Transactional;import javax.persistence.EntityManager;import javax.sql.DataSource;import java.sql.SQLException;@Configuration@EnableJpaRepositories(basePackages = "db", entityManagerFactoryRef="entityManagerFactoryOracle", transactionManagerRef="transactionManagerOracle")public class MyConfig { @Bean public DataSource dataSourceOracle() throws SQLException { OracleDataSource dataSource = new OracleDataSource(); dataSource.setUser("abc"); dataSource.setPassword("abc"); dataSource.setURL("jdbc:oracle:thin:@192.168.1.2:1521:orcl"); dataSource.setImplicitCachingEnabled(true); dataSource.setFastConnectionFailoverEnabled(true); return dataSource; } @Bean public HibernateJpaVendorAdapter jpaVendorAdapterOracle() { HibernateJpaVendorAdapter adapter = new HibernateJpaVendorAdapter(); adapter.setDatabase(Database.ORACLE); adapter.setShowSql(true); adapter.setGenerateDdl(false); return adapter; } @Bean(name = "entityManagerFactoryOracle") public LocalContainerEntityManagerFactoryBean entityManagerFactoryOracle() throws SQLException{ LocalContainerEntityManagerFactoryBean emf = new LocalContainerEntityManagerFactoryBean(); emf.setDataSource(dataSourceOracle()); emf.setPersistenceUnitName("myPersistence1"); emf.setJpaVendorAdapter(jpaVendorAdapterOracle()); emf.setPackagesToScan("entity"); return emf; } @Bean(name="transactionManagerOracle") public JpaTransactionManager transactionManagerOracle() throws SQLException{ JpaTransactionManager txManager = new JpaTransactionManager(entityManagerFactoryOracle().getObject()); return txManager; }}mysql的配置文件如下
package mysqldb;import com.mysql.cj.jdbc.MysqlDataSource;import org.hibernate.jpa.boot.spi.EntityManagerFactoryBuilder;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.data.jpa.repository.config.EnableJpaRepositories;import org.springframework.orm.jpa.JpaTransactionManager;import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;import org.springframework.orm.jpa.vendor.Database;import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;import org.springframework.transaction.annotation.Transactional;import javax.sql.DataSource;import java.sql.Connection;import java.sql.SQLException;@Configuration@EnableJpaRepositories(basePackages = "mysqldb", entityManagerFactoryRef="entityManagerFactoryMySql", transactionManagerRef="transactionManagerMySql")public class MySqlConfig { @Bean public DataSource dataSourceMySql() throws SQLException { MysqlDataSource dataSource = new MysqlDataSource(); dataSource.setUser("abc"); dataSource.setPassword("abc"); dataSource.setURL("jdbc:mysql://localhost:3306/test?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC"); return dataSource; } @Bean public HibernateJpaVendorAdapter jpaVendorAdapterMySql() { HibernateJpaVendorAdapter adapter = new HibernateJpaVendorAdapter(); adapter.setDatabase(Database.MYSQL); adapter.setShowSql(true); adapter.setGenerateDdl(true); return adapter; } @Bean(name = "entityManagerFactoryMySql") public LocalContainerEntityManagerFactoryBean entityManagerFactoryMySql() throws SQLException{ LocalContainerEntityManagerFactoryBean emf = new LocalContainerEntityManagerFactoryBean(); emf.setDataSource(dataSourceMySql()); emf.setPersistenceUnitName("myPersistence2"); emf.setJpaVendorAdapter(jpaVendorAdapterMySql()); emf.setPackagesToScan("mysqlentity"); return emf; } @Bean(name="transactionManagerMySql") public JpaTransactionManager transactionManagerMySql() throws SQLException{ return new JpaTransactionManager(entityManagerFactoryMySql().getObject()); }}
这两个配置文件一出,大部分的工作就完成啦。
作为测试。我们分别定义表MyEntity在 oracle中,表MySqlEntity在mysql中
package entity;import javax.persistence.*;import java.math.BigDecimal;@Entitypublic class MyEntity { @Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "prooduct_id_seq") @SequenceGenerator(name="prooduct_id_seq", sequenceName = "PRODUCT_ID_SEQ", allocationSize = 100) private Integer id; @Version private Integer version; private String testString; private BigDecimal testNumber; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public Integer getVersion() { return version; } public void setVersion(Integer version) { this.version = version; } public String getTestString() { return testString; } public void setTestString(String testString) { this.testString = testString; } public BigDecimal getTestNumber() { return testNumber; } public void setTestNumber(BigDecimal testNumber) { this.testNumber = testNumber; }}
MySqlEntity的内容如下
package mysqlentity;import javax.persistence.*;import java.math.BigDecimal;@Entitypublic class MySqlEntity { @Id @Column(name = "id", nullable = false, length = 64) private Integer id; @Version private Integer version; private String testString; private BigDecimal testNumber; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public Integer getVersion() { return version; } public void setVersion(Integer version) { this.version = version; } public String getTestString() { return testString; } public void setTestString(String testString) { this.testString = testString; } public BigDecimal getTestNumber() { return testNumber; } public void setTestNumber(BigDecimal testNumber) { this.testNumber = testNumber; }}
测试嘛。就随便弄俩个数据库操作
oracle 的
package db;import entity.MyEntity;import org.springframework.data.jpa.repository.JpaRepository;import java.math.BigDecimal;import java.util.List;public interface MyEntityRepository extends JpaRepository<MyEntity, Long> { List<MyEntity> findByVersion(Integer version);}
mysql的
package mysqldb;import entity.MyEntity;import mysqlentity.MySqlEntity;import org.springframework.data.jpa.repository.JpaRepository;import java.util.List;public interface MySqlEntityRepository extends JpaRepository<MySqlEntity, Long> { List<MySqlEntity> findByVersion(Integer version);}
最后就是测试用的MyService
package service;import db.MyEntityRepository;import entity.MyEntity;import mysqldb.MySqlEntityRepository;import mysqlentity.MySqlEntity;import org.springframework.beans.factory.annotation.Autowired;import java.util.List;public class MyService { @Autowired public MyEntityRepository myEntityRepository; @Autowired public MySqlEntityRepository mySqlEntityRepository; public String processCommand(String anything) { String str = "hello"; List<MyEntity> myEntityList = myEntityRepository.findAll(); List<MyEntity> myEntityList2 = myEntityRepository.findByVersion(3); List<MySqlEntity> myEntityList3 = mySqlEntityRepository.findAll(); return str; }}怎么样?代码都跑起来了吧。。很容易就实现了JAVA同时操作两个数据库,下一篇将介绍如何操作ES
0 0
- JAVA数据库操作二(多个数据库操作+Spring data + jpa)
- JAVA操作数据库一(Spring data jpa)
- Spring data jpa操作数据库
- Spring boot结合Spring-Data-JPA操作MySQL数据库
- SpringBoot学习(五)操作数据库Spring-Data-JPA
- • Spring Boot 进 阶- 数 据 访 问-使用spring-data-jpa 操作数据库
- Spring Data JPA更新操作
- springboot JPA操作数据库
- SpringData-JPA操作数据库
- 利用Java反射解决Spring Data JPA繁琐更新操作
- java Servlet操作多个mysql数据库
- Spring Boot+JPA+Mysql完成数据库整合操作
- JBOSS使用JPA操作数据库
- SpringBoot JPA标准规范操作数据库
- SpringData JPA操作MySQL数据库
- SpringBoot整合JPA操作数据库
- SpringBoot 使用JPA操作数据库
- spring-boot-data-jpa 连接数据库
- 每日一则(7):清除input的记忆值
- Ubuntu下快速部署opencv环境
- 多线程播放视音频ffmpeg+SDL
- 题目:代码实现判断单链表是否有环
- 通过jdk源码理解ArrayList和LinkedList区别
- JAVA数据库操作二(多个数据库操作+Spring data + jpa)
- sql模糊查询遇到问题,求助各路大神,SOS
- 代码记录
- 自定义下载圆形进度条
- 栗子如图
- 通过python将大量文件按修改时间分类
- Android开发之ShapeDrawable
- HBase体系结构
- Lua积累