2010-12-14 37 views
0

我們的系統中有一個大表business_apply。它用於存儲業務應用信息,幷包含數百個列。Java orm問題

當業務類型不同時,列可能意味着不同的事情。

什麼樣的orm框架可以讓我們的生活更輕鬆?休眠,iBatis或其他?

+0

休眠我會建議, – 2010-12-14 12:18:56

+0

但hibernate如何處理這樣的問題?爲每種業務類型創建一個Model類? – idiotgenius 2010-12-14 12:26:21

回答

2

根據您的描述您正在使用「錯誤的」 DB模式:(!)的列

  1. 表可能包含數百個
  2. 「當業務類型的diff,一列可能意味着不同的事情」

因此,hibernate不適合你。該工具適用於「正確」的解決方案。 Hibernate不能幫你太多,因爲它不能將你的數據映射到java對象。您需要某種自定義的映射實現。

我認爲你需要普通的JDBC或像雅加達的DBUtils這樣的非常簡單的幫助器。一旦你連接到數據庫,並設法訪問你的大表實現一個自定義的機制(可能是每個業務),將你的大部分數據映射到你的值對象。

+0

:D對不起我的英文!是的,將我們的數據庫模式映射到java Objects幾乎是不可能的。整個系統是在10多年前設計的,而我是我們公司的新手,我想做一些改變。 – idiotgenius 2010-12-14 13:22:12

0

Hibernate已經是一個標準。這幾乎適用於所有情況,使用簡單。我也會推薦Hibernate。

+2

我不同意--Hibernate不是一個標準; SQL是。 – duffymo 2010-12-14 12:57:47

+0

他已經要求ORM框架。 SQL是一種查詢語言,而不是orm框架。 – leshkin 2010-12-14 13:24:51

+0

與duffymo一致,Hibernate被廣泛使用,但它不是一個標準,並且在某些情況下它可以是一個好的或者不合適的。 – Brian 2010-12-14 14:58:36

0

我認爲你的設計聽起來像是需要一些規範化。根據其他列改變其含義的列表聽起來像是理解和維護的噩夢。

就這樣說,我認爲任何持久性解決方案都可以工作。使用Hibernate不會讓你擺脫困難,想出一個好的對象模型來映射數據。您的物體模型將比桌子更細。您可以使用任何您熟悉的技術將數據映射到對象中,並將修改的對象加載回表中。

但首先你必須有對象。

0

IBatis非常適合讓你做手動SQL,讓你手動控制處理表設計,這可能不適合ORM處理。

0

JPA - 任何實現都可以。使用單表繼承策略來適應單個表中的所有類。您需要識別鑑別器列。你應該能夠在多個子類中使用相同的列來表示不同的東西(也許 - 無論如何它值得一試)。