假设您在两个环境中有四个 MySQL 数据库架构:
foo
(产品数据库),bar
(正在进行的foo
db重组),foo_beta
(测试数据库),bar_beta
(新结构的测试数据库)。此外,假设您有一个在实体上带有 Hibernate 注释的 Spring Boot 应用程序,如下所示:
@Table(name="customer", schema="bar")
public class Customer { ... }
@Table(name="customer", schema="foo")
public class LegacyCustomer { ... }
Run Code Online (Sandbox Code Playgroud)
在本地开发时没有问题。您模仿本地环境中的生产数据库表名称。但随后您尝试在功能上线之前演示功能并希望将其上传到服务器。您在另一个端口上启动应用程序的另一个实例,并意识到此副本需要指向“foo_beta”和“bar_beta”,而不是“foo”和“bar”!该怎么办!
如果您在应用程序中仅使用一种架构,您可以将架构全部放在一起并指定hibernate.default_schema
,但是...您正在使用两种。所以就这样了。
Spring EL --eg@Table(name="customer", schema="${myApp.schemaName}")
不是一个选项--(甚至有一些傲慢的“没人需要这个”评论),所以如果动态定义模式是荒谬的,那么人们会怎么做?除了,你知道,一开始就没有进入这个荒谬的场景。
归档时间: |
|
查看次数: |
4544 次 |
最近记录: |