JHipster能否将MySQL设为开发库、MongoDB设为生产库?
关于JHipster混用开发/生产不同类型数据库的问题解答
核心结论
你无法通过手动修改.yo-rc.json配置的方式实现「开发环境用MySQL、生产环境用MongoDB」的需求,直接修改配置后执行JHipster生成命令会触发校验错误,无法正常生成代码。
具体原因
- JHipster的
databaseType是全局核心配置,直接决定持久层代码的生成逻辑:- 选择SQL类数据库会生成基于JPA/Hibernate的实体注解、Repository接口、SQL事务、数据库迁移等全套适配SQL的代码
- 选择MongoDB会生成基于Spring Data MongoDB的文档注解、Repository接口、Mongo序列化配置、数据迁移等全套适配NoSQL的代码
两套持久层逻辑完全不兼容,JHipster本身不支持同时生成适配两种不同类型数据库的代码。
- 你看到的
devDatabaseType和prodDatabaseType配置仅在同类型数据库下生效,比如开发用H2、生产用MySQL这种同属SQL类型的场景,跨SQL和NoSQL类型的配置是不被支持的。
替代方案(非必要不推荐)
如果你确实必须实现这个需求,只能手动二次改造生成后的代码:
- 优先按照生产环境要求,选择MongoDB作为数据库类型生成整套代码
- 手动引入JPA、MySQL连接驱动等依赖,额外编写适配MySQL的JPA实体、持久层代码
- 配置多环境切换逻辑,开发环境加载MySQL配置、启用JPA持久层,生产环境加载MongoDB配置、启用MongoDB持久层
提示:这种方案会带来极高的额外开发成本,同时会导致开发和生产环境的持久层执行逻辑不一致,很容易出现仅在生产环境触发的隐藏问题,没有特殊的必要性不建议采用。
内容的提问来源于stack exchange,提问作者Dibyaratnam Samarlia
相关产品推荐
相关产品推荐

