想象一下,你必須在兩個環境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「的」沒有人需要這個「評論),所以如果動態定義模式是荒謬的,那麼它是做什麼的?除此之外,你知道,首先不會陷入這種荒謬的場景。