hibernate - Spring Boot/JPA/Hibernate,如何根据Spring配置

我正在使用 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/

相关文章:

python - 如何清除 PYQTGRAPH 中的 ScatterPlotItem

amazon-s3 - Haproxy - 将请求转发到 S3 托管站点

python - 如何删除 Tkinter OptionMenu 小部件的边框

curl - 如何使用 curl 访问 IBM speech-to-text api?

coldfusion - 如何从 Coldfusion 中的结构数组中删除重复项

c - FreeRTOS 中的抢占

sql-server - 为什么即使回滚事务,SQL Server 仍保持可变状态?

java - 从测试用例调用 Controller 时,使用自动连线组件测试 Controller

python - Flask 应用程序搜索栏

php - 使用带有表前缀的 DB::raw()