2011-04-28 24 views
0

這種情況通常如何處理?我有一個域對象,它包含的數據是2個表之間的連接的結果;應如何處理更新?通過JOIN創建的域對象的更新

一種方法是使TableADao,TableBDao(1to1表與Dao的關係)具有由有效處理關係的Repository類構建的域對象(加入&批量更新)。

有沒有更好的方法?使用JOIN似乎更有效。 2表非常小,但是我必須支持&不能更改的遺留數據庫的一部分。

ORM如何處理這種情況?

回答

0

創建一個視圖,你可以更新它,就好像它是一個表。

+0

這肯定會解決我的問題,但我想知道這將如何與無數據庫修改要求一起工作。我可以以一次性使用的方式做到這一點,例如: Dao在實例化時創建視圖,然後在被銷燬時將其刪除?這個數據庫實現也是特定的嗎?現在我只支持Oracle 10/11g,但最終會支持MSSQL,MySql,並希望我們可以接近完全獨立DB執行 – Stoney 2011-04-28 15:19:41

+0

我不確定,你可能想問一下dba.stackexchange.com – 2011-04-28 21:06:15

0

這取決於您使用的ORM。它可能支持也可能不支持聚合對象和/或映射視圖。

+0

不幸的是(或者可能不是,至少從數據庫管理員的角度來看,我一直在閱讀關於ORM如何非常不酷的內容),由於數據庫設計不佳,我無法使用真正的ORM。特別是,一旦部署,它必須能夠處理對數據庫模式的更改,這對於靜態db->域映射來說不是好兆頭。現在,我正在使用Apache DBUtils和一個自定義解析器,它將一些已知的cols映射到bean屬性,在地圖中拋出所有其他東西,並依靠安全的訪問器方法來防止NPE。 – Stoney 2011-04-28 15:16:08

+0

每當數據庫模式發生變化時,不應在現有代碼中造成重大更改,對吧......?如果添加表,ORM可以處理它。如果字段被添加或重命名,ORMs也可以處理。基本上可以使用視圖來處理或覆蓋任何更改。但事實仍然是,保持糟糕的傳統應用程序糟透了: - / – 2011-04-29 07:05:19

相關問題