當Hibernate遭遇多個結構相同的表

          Posted on 2008-03-19 23:58 Norvid 閱讀(1759) 評論(0)  編輯  收藏 所屬分類: 點點滴滴
          在一些大數(shù)據(jù)量的應用中,通常會將一些數(shù)據(jù)量大的表分成多個。最簡單的情況是設置一個實時表,用來保存最近一段時間的數(shù)據(jù),我們叫它recent_data;同時又有一個保存歷史數(shù)據(jù)的表,名叫history_data。當然,也可以采用一段時間一個表的方式,如一個月一張表:data_200803。

          recent_data保存最新的數(shù)據(jù),通常是為了提供預覽、監(jiān)視等對顯示速度要求高的功能,使用者此時往往是想要一個數(shù)據(jù)的大概印象,因此響應速度十分重要;而history_data則面向詳細查詢,這時使用者關注的數(shù)據(jù),因此,慢是可以接受的。

          介紹背景介紹得有點跑題了,還是回來說說正題。面對recent_data和history_data這兩張表要使用hibernate進行封裝時,該怎么解決呢?

          這里有三個方法。

          1. 使用古老而笨拙的方法——為每個table建立一個class,如RecentData和HistoryData。然后在上層程序中使用這兩個類。
          優(yōu)點:簡單,方便,快捷,還不費腦子!(僅對負責Hibernate封裝的人來說……)
          缺點:上層使用極其復雜,明明就是同一個東西,偏偏弄成兩個對象,要寫兩套實現(xiàn)……&@&*¥#%

          2. 建立一個基類Data,然后派生出RecentData和HistoryData,分別映射兩個表。派生出的兩個類不用寫什么東西,僅僅是extends了Data就行了。對外一致以基類Data出現(xiàn),這樣上層使用時,就可以統(tǒng)一用Data類了。此法為第一種方法的改進版,也是我偏愛的解決方法。
          優(yōu)點:Hibernate映射簡單,上層使用也簡單
          缺點:多了兩個類,盡管里面啥也沒有

          3. 使用Hibernate3新增加的entity-name特性,用一個類來映射多個table。這里有一個詳細的例子(http://www.javaworld.com.tw/confluence/pages/viewpage.action?pageId=3150)。
          優(yōu)點:不用定義那么多類,映射也挺簡單
          缺點:Hibernate3才有此功能(如果你還在用之前的版本的話……)

          -- EOF --



          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導航:
           

          posts - 0, comments - 9, trackbacks - 0, articles - 13

          Copyright © Norvid

          主站蜘蛛池模板: 化州市| 柳江县| 称多县| 延边| 潍坊市| 阳江市| 吕梁市| 南昌市| 花垣县| 沧源| 西吉县| 曲阜市| 上犹县| 平昌县| 乌鲁木齐县| 祁阳县| 孟村| 河间市| 汨罗市| 宕昌县| 安徽省| 亳州市| 安庆市| 霍山县| 杭锦旗| 潼南县| 韶关市| 高阳县| 剑川县| 平顶山市| 深泽县| 黔西县| 巩义市| 象州县| 东台市| 广昌县| 芦山县| 巫溪县| 礼泉县| 万安县| 满洲里市|