2011-12-14 55 views
4

您認爲使用Hibernate的「正確」方式是什麼?要在對象級別(類)設計模型,然後從中生成DDL?要在關係級別(表格)設計模型,然後從中生成類別?休眠:DDL <->類,哪個方向?

每種方法的優缺點是什麼?

在首先創建DDL的情況下,您可以從中生成類,然後您可以在類中添加一些代碼,例如當您想要向表中添加新列時發生了什麼,例如,您必須修改班級分別。手動? Hibernate是否提供了一個工具來修改類,而不需要完全重新生成類(移除自定義代碼)?

感謝

回答

4

我更喜歡下面的方法:

  • 在你設計類,並從中產生DDL項目的早期階段,這樣就可以輕鬆地爲經常改變你的域模型你需要。

    但是,在設計領域模型時,您仍然需要牢記數據庫模式,以避免創建導致數據庫訪問效率低下的模型。

  • 隨着項目的發展和領域模型變得更加穩定,您可以開始將數據庫模式作爲單獨的工件來維護。它簡化了索引和約束的微調。

    在這個階段,您需要手動讓模式與域模型保持同步,但無論如何都需要它,因爲由Hibernate提供的自動DDL更新在生產中不夠可靠,因此您需要跟蹤您的爲他們更改並編寫遷移腳本。

+1

+1。如果你知道Hibernate是如何工作的,設計實體或者設計表就是或多或少都是同樣的事情,你永遠不應該忘記你的對象必須以某種方式映射到表,並且查詢必須是有效的。 – 2011-12-14 15:05:21

2

我會首先生成域類,然後使用Hibernate創建DDL。

這是因爲這允許您指定將導致創建適當的外鍵的表(ManyToOne等)之間的關聯。您還可以使用註釋來指定將在生成的DDL中反映的唯一索引。

但是,一旦你的項目是穩定的,你不應該使用休眠來升級你的域名類更改你的架構。