2009-08-26 92 views
4

我想用Hibernate編寫一個程序。我的域名現已完成,正在編寫數據庫。休眠工作流程

我很困惑該怎麼做。我應該

  • 使我的SQL表中的類,讓Hibernate的讓他們
  • 還是在 數據庫中創建表和逆向工程並 讓休眠使我的班?

我聽到了某人的第一個選項,並閱讀了Netbeans站點上的第二個選項。

有沒有人知道哪種方法是正確的?

回答

4

這取決於你如何最好地概念化你正在編寫的程序。當我設計我的系統時,我通常會根據實體以及它們與彼此的關係來思考,所以對於我來說,我先從業務對象開始,然後編寫我的hibernate映射並讓hibernate創建數據庫。

其他人在數據庫表格方面能夠更好地思考,因爲這種方法最適合他們。所以你必須根據你的經驗決定哪一個適合你。

+0

當然,如果你從頭開始,我會讓休眠做這項工作。我懶惰雖然:) – lucas 2009-08-26 15:00:18

+1

我曾經聽過懶惰的程序員通常是最好的LOL – Zoidberg 2009-08-26 15:02:18

1

我相信你也可以做,所以這是優先選擇。

就我個人而言,我手寫這個地段。雖然Hibernate爲你創建數據庫做了一件合理的工作,但它並沒有像我自己做的那樣好。我假設對於它生成的Java類也是如此,儘管我從未使用過該功能。

關於生成的類(如果你去了類生成路線),我打賭每個領域都有一個getter/setter字段是否應該只讀或沒有人說線程安全和可變性,無法添加行爲,因爲如果重新生成類,它將被覆蓋。

+1

加上當你是新的少,發生在場景後面的「魔術」更好,手動做一切將讓你更好地理解整個過程。 – serg 2009-08-26 15:13:46

+0

@serg555:關於較少'魔法'的好處,+1。 – 2009-08-26 15:29:41

0

絕對寫入java對象,然後添加持久性並讓hibernate生成表。

如果你走另一條路,你會失去OOD和所有好東西的好處。

0

我主張先寫Java。儘管如此,這可能是個人偏好。

如果你分析你的域名,你可能會發現它們有些重複。

  • 例如,審計列(用戶創建者和編輯者,創建和編輯的時間)通常對大多數表格都是通用的。
  • 該id通常是一個共同的字段。

看看你的域名,看看你的重複。

重複是重複使用的機會。 你可以使用繼承或組合。 優點:

  • 更少的時間:您將有少得多的東西來寫,
  • 邏輯:同樣的邏輯字段將被寫一次(這將是其他很多類似領域)
  • 再利用:在你的實體的客戶端代碼,你可以編寫可重用的代碼。例如,如果所有實體都具有相同的由於其超類而被稱爲ident的id字段,則客戶端代碼可以使通用調用object.getIdent()無需查找對象的確切類,因此它將更具可重用性。