2010-07-16 128 views
2

我需要一些更多信息。Java持久性框架

我正在開發一個小應用程序,它將與PHP web應用程序進行交互。我們整合的媒體服務器在Java中是可擴展的。

我需要在我們正在開發的插件內訪問非常少的數據庫,我只需要在大約10%的表中查看行。我只需要更新其中一個表格中的數據。

架構作爲一個整體充滿了外鍵,但目前(但很少有機會這樣的變化在未來)我不需要修改任何其他信息,除了一列DATABSE(這是不一個外鍵)。

我真的不想模擬所有這些關係 - 因爲沒有必要。

我最好的選擇是什麼? Hibernate會讓我映射所有這些域對象嗎? myBatis(以前稱爲iBATIS)是一個更好的選擇,因爲我正在交付的人也更適合使用SQL?我選擇哪個持久性框架有什麼關係 - 它們是否都會讓我對每個表格建模?

這些是mySQL InnoDB表,如果它有任何區別。

回答

2

Hibernate只要求你在Java應用程序的上下文中映射你想要使用的項目。因此,您只能將對象映射到您希望從Java端訪問的那些表。

因爲雖然過程中的一些注意事項:

  • 你將不得不對所有表的所有對象/關係與給定的實體表將交互
  • 事情可能是混亂的兩個程序擊中模型數據庫在同一時間。雖然這是一個由Hibernate進行鎖定的問題,但這種情況往往會在PHP中失敗。
+0

由於不得不爲每個涉及的表建模,所以使用myBatis更容易。不幸的是,所涉及的表格失去了控制,這基本上需要映射整個數據庫,當我只需要在3個表上選擇訪問並在1上更新時,這是不必要的。 – Scott 2010-07-22 17:20:00

1

使用Hibernate,您只需要爲將要使用的對象建模,並且ddl2hbm工具可能能夠基於現有數據庫爲您生成Java類,具體取決於是否存在鏈接到模型的外鍵你將不會使用。

2

我真的無法談論Hibernate,但myBatis不會讓你模擬任何東西 - 只需創建一個包含你關心的屬性的POJO,然後編寫映射(直接sql)映射任何列的映射無論你想進入你的pojo表。