如何通过 Spring Data JPA 了解底层数据库名称
Posted
技术标签:
【中文标题】如何通过 Spring Data JPA 了解底层数据库名称【英文标题】:How to know underlying database name via Spring Data JPA 【发布时间】:2020-04-10 02:45:05 【问题描述】:我正在使用 Spring Data JPA 连接到我的 spring-boot 应用程序中的多个数据库,方法是确定在运行时连接哪个数据库。如何检查我实际连接到哪个数据库的验证,我的查询正在运行?
【问题讨论】:
你使用休眠多租户吗? 是的,我正在使用多个数据源并遵循本教程:javadeveloperzone.com/spring-boot/… 您不相信该方法的哪一部分需要验证? 在返回适当的实体管理器时,我有一个错字,并且在两种情况下都返回了相同的实体管理器,因此无论输入如何,查询都在同一个数据库上运行 - 因此出现了验证我连接的位置到。我能够解决我的实际问题,但仍想探索了解连接数据库的可能性。 【参考方案1】:尝试从数据源中获取 URL,也许会这样做:
dataSource.getConnection().getMetaData().getURL();
查看DatabaseMetaData
文档以获取完整详细信息。
【讨论】:
OP 说他有多个数据库,所以他很可能有多个数据源。对于这段代码,问题仍然是如何获取实际使用的数据源。【参考方案2】:我能想到的只有一些像(简化的)
@Entity
public class ConfigDB
Integer id;
String tenant;
然后有一个存储库:
public ConfigDBRepository extends CrudRepository
public boolean existsByTenant(String tenant);
并且在此表设置中的每个数据库中都有此租户以进行验证。
【讨论】:
【参考方案3】:引用的答案来自:
how to properly specify database schema in spring boot?
只是在实际的数据库主机名之后附加架构名称。对于我的代码 mysql DB 已配置,这对我来说很好:
appname.datasource.url = jdbc:mysql://DBhostname.com/schema_test?useSSL=false
键名可以是适合您的应用程序的任何自定义名称
【讨论】:
以上是关于如何通过 Spring Data JPA 了解底层数据库名称的主要内容,如果未能解决你的问题,请参考以下文章
Spring Data 系列学习Spring Data JPA 基础查询
了解 Spring Data JPA @NoRepositoryBean 接口
spring data jpa学习笔记一:helloworld
如何通过 Sum SQL 与 Spring Data JPA 一起使用组?