spring-data-jpa 如何在JPA中连接多个数据库?

3j86kqsm  于 2022-11-10  发布在  Spring
关注(0)|答案(3)|浏览(240)

我有一个Sping Boot 应用程序,它当前使用JPA连接到一个数据库。连接详细信息在其application.properties文件中:

spring.datasource.url=jdbc:oracle:thin:@localhost:1522:orcl
spring.datasource.username=example
spring.datasource.password=example
spring.datasource.driver.class=oracle.jdbc.driver.OracleDriver

现在我有一个新的数据库,我想连接,所以我的应用程序连接2个数据库现在。我可以连接它使用JDBC,在那里我将不得不手动编写连接代码。
我已经寻找了解决方案。一些是在休眠中有多个配置文件。其他的是使用JDBC。
我试着在spring文档中查找是否有在www.example.com文件中定义多个数据源的规定application.properties,但什么也找不到。
我想知道是否存在单独使用JPA的解决方案。谢谢您的时间。

kupeojn6

kupeojn61#

请遵循以下步骤:
1.将其他数据源配置添加到application.properties。
1.在www.example.com中将SQLDialect设置为“default”application.properties,以便Spring自动检测每个数据源的不同SQLDialect
1.为每个具有两个嵌套包的数据源创建一个Java包
1.为第一个数据库创建配置类
1.为第二个数据库创建一个配置类
1.为第一个数据库创建实体
1.为第一个数据库创建资料档案库
1.为第二个数据库创建实体
1.为第二个数据库创建资料档案库
完整代码可在此处获得,

https://github.com/jahe/spring-boot-multiple-datasources

以上步骤摘自本教程

https://medium.com/@joeclever/using-multiple-datasources-with-spring-boot-and-spring-data-6430b00c02e7

希望这对你有帮助:)

fcipmucu

fcipmucu2#

在配置文件中创建不同的数据源Bean。您应该能够在Bean中提供所有与数据库相关的配置:

@Bean
public DataSource db1(String url, String dbuser, String password) {
} 

@Bean
public DataSource db2(String url, String dbuser, String password) {
}
3hvapo4f

3hvapo4f3#

只需在application.properties文件中添加第二个DB源参数,如下所示


# DATABASE_ONE

spring.datasource.url=jdbc:oracle:thin:@//host:port/instancename
spring.datasource.username=SCHEMA_ONE
spring.datasource.password=SCHEMA_ONE_PASSWORD

# DATABASE_TWO

spring.second-datasource.jdbcUrl=jdbc:oracle:thin:@//host:port/instancename
spring.second-datasource.username=SCHEMA_TWO
spring.second-datasource.password=SCHEMA_TWO_PASSWORD

使用@Table注解中的schema键定义实体要使用的数据库

@Entity
@Table(schema = "SCHEMA_ONE", name="TABLE_NAME")
public class ClassOne{
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int paramOne;
    private String paramTwo;
    private String paramThree;
    private int paramFour;
    private Date paramFive;
}

@Entity
@Table(schema = "SCHEMA_TWO", name="TABLE_NAME")
public class ClassTwo{
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int paramOne;
    private String paramTwo;
    private String paramThree;
    private int paramFour;
    private Date paramFive;
}

将储存库和服务写成它。

相关问题