gpt4 book ai didi

hibernate - Spring Boot/JPA/Hibernate,如何根据Spring配置文件切换数据库供应商?

转载 作者:行者123 更新时间:2023-12-05 09:19:46 25 4
gpt4 key购买 nike

我正在使用 Spring Boot/JPA/Hibernate。我想在本地主机上测试时使用 HSQLDB,在服务器上部署时使用 MySQL。

在 pom.xml 中,我对 MySQL 有这样的依赖:

 <dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>

以及对 HSQLDB 的这种依赖:

<dependency>
<groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
</dependency>

由于 Spring Boot 自动配置,我可能无法将两个依赖项都放在 pom.xml 中。但是我想在 local Spring 配置文件处于事件状态时使用 HSQLDB,而在 server Spring 配置文件处于事件状态时使用 MySQL。理想情况下,我只想生成一个 war 文件并使用 mvn spring-boot:run 运行本地版本并从 war 文件部署服务器版本。

有什么想法吗?

附:我用的是maven

最佳答案

I probably can't put both dependencies in pom.xml due to Spring Boot autoconfiguration.

当然你可以同时拥有它们。有几种解决方案。

最基本的方法是拥有两个依赖项并使用 mysql 数据库的设置在您的项目中创建一个 application-server.properties。当您在没有特定配置文件的情况下运行应用程序时,Spring Boot 将找不到任何连接到 MySQL 的信息,因此它将回退到 HSQL。在服务器上部署应用程序时,请确保启用 server 配置文件。同一 Artifact 可用于两种用例。

您可以通过在生成 fat jar 时排除 hsql 依赖项来稍微改进该解决方案。这样做的好处是,如果您忘记启用配置文件,您将在启动时遇到异常,而不是默默地使用内存中的数据库。要排除 hsql,只需 configure the maven plugin .您将能够在本地 (mvn spring-boot:run) 或在您的 IDE 中运行该应用程序,并且 fat jar 将仅包含 mysql 依赖项。不过,您仍然需要启用 server 配置文件。

如果您使用的是 war ,则不能使用最后一个解决方案:切换到 jar 的另一个原因 ;-)

关于hibernate - Spring Boot/JPA/Hibernate,如何根据Spring配置文件切换数据库供应商?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39868307/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com