想象一下,你必须在两个环境4层MySQL数据库架构:动态模式
foo
(督促分贝),bar
(正在进行中的重组foo
分贝的)foo_beta
(测试分贝),- 和
bar_beta
(新结构的测试分贝)。
此外,想象你有对实体Hibernate的注释,像这样一个春天启动的应用程序:
@Table(name="customer", schema="bar")
public class Customer { ... }
@Table(name="customer", schema="foo")
public class LegacyCustomer { ... }
在本地开发是没有问题的。您在本地环境中模拟生产数据库表名称。但是,然后你会尝试演示功能,然后将其上传到服务器。您在另一个端口上启动另一个应用程序实例,并意识到此副本需要指向“foo_beta”和“bar_beta”,而不是“foo”和“bar”!该怎么办!
如果您在应用程序中只使用一种架构,则可能已将架构放在一起并指定hibernate.default_schema
,但是......您正在使用两个架构。所以就这样了。
Spring EL - 例如, @Table(name="customer", schema="${myApp.schemaName}")
不是一个选项 - (即使有些sn“的”没有人需要这个“评论),所以如果动态定义模式是荒谬的,那么它是做什么的?除此之外,你知道,首先不会陷入这种荒谬的场景。