如何制作一个嵌入 H2 的演示 JHipster 用于“生产”

Posted

技术标签:

【中文标题】如何制作一个嵌入 H2 的演示 JHipster 用于“生产”【英文标题】:How to make a demo JHipster with H2 embedded for 'production' 【发布时间】:2017-01-21 03:31:17 【问题描述】:

我使用 JHipster 3.12.2 (Spring Boot) 和 H2(磁盘,而不是内存)开发了一个小型演示应用程序(3 或 4 个实体表,大多数实体,以及 48 个嵌入为 ImageBlob 的图像数据库,使用 JHipster JDL 生成)。当我生成应用程序时,我选择 Postgresql 作为生产数据库,因为 H2 不是一个选择......但是我遇到了 dockerized 版本的一些问题(它真的很慢,需要将 Docker 放在他的机器上,需要弄清楚如何重新初始化数据等)所以我想知道是否有一种简单的方法可以将 H2 嵌入到我的“生产”数据库中? (然后我可以重用我在开发中使用的 CSV 文件和数据加载脚本)

【问题讨论】:

【参考方案1】:

嗯,就像将datasourcejpa 相关配置从application-dev.yml 复制到application-prod.yml 一样简单,告诉它应该加载h2 驱动程序而不是psql。

但是我不建议将 h2 用作真正的生产,因为该数据库缺乏管理工具,因为不习惯选择 h2。如果您不使用 Postgres,您仍然可以切换到 mysql 进行生产,前提是这更符合您的需求。

【讨论】:

我看到我编辑了一个重要的注释 - 我的“生产”只是在一个人的笔记本电脑上运行独立应用程序以进行 UX 演示,因此管理、安全等不适用。也就是说,你的建议是有效的 - 有一个警告。我在 JHipster 中发现的很奇怪:如果您知道要在生产配置文件中使用 H2,请从 MSSQL 开始,而不是 Postgres。当我开始使用 MSSQL 时,我可以按照您的建议进行操作(并且我从 pom.xml 中删除了 MSSQL 驱动程序依赖项);但是如果我从 Postgres 开始,这样做会给我一个“重复的 [hibernate_sequence]”错误,并且集成测试都失败了。

以上是关于如何制作一个嵌入 H2 的演示 JHipster 用于“生产”的主要内容,如果未能解决你的问题,请参考以下文章

调试 JHipster 应用程序抛出:java.lang.ClassNotFoundException: org.h2.server.web.WebServlet

如何嵌入 H2 数据库

Flyway 与 Spring Boot 的集成不会在嵌入式 H2 数据库上执行迁移脚本

如何使用 H2 嵌入式数据库获取序列中的下一个值?

JHipster生成微服务架构的应用 - 准备工作

如何使用 H2 嵌入式数据库创建 H2 内存数据库