由大集合的對映引出的深層的OR不匹配問題

2021-08-25 12:13:39 字數 793 閱讀 6555

很多優秀的orm工具只解決了物件模型和關係模型在結構上的不匹配問題,但是在行為層面上,這兩種模型也有著各自不同的運作方式,這種不匹配似乎更難以彌合。在乙個典型的一對多關聯中,如果多方是乙個數量巨大的集合,那麼幾乎在任何情況下,我們都不能直接載入這個集合到記憶體中,進而也就不會有基於這個集合的任何遍歷或過濾操作。這些操作本應是物件模型的一些基本行為模式,而在「巨大資料量」的現實面前變得幼稚而可笑。

是對像模型錯了麼?如果我們不對映這個一對多關聯又會怎樣呢?從物件模型的角度看,關聯雙方的關聯關係往往反映的是業務層面上事物間深刻的內在關係,這種關係本身就是業務邏輯的一部分,去除這種關聯,會能讓物件模型無法揭示真實的業務邏輯,變得和真實的業務模型漸行漸遠,也就失去了建立物件模型的意義。

因此,關聯關係是一定要在模型中做出來的,但在目前這種尷尬的境地下,只有domain collection能從一定程度緩和這一矛盾,但也僅限於對集合的遍歷操作。至於包含複雜規則的過濾操作,可能需要specification模式的幫助。這一點需要進一步的實踐。

最後接著大集合的這個例子再擴充套件開來講,在物件模型中,「定位」某個物件往往是從某一已知物件(往往是聚合根)一步步「導航」得到的。這一過程暗含了這樣的背景:即所有物件都已載入記憶體,可供程式任意導航,這顯然是過於理想化的要求。相較而言,通過關係模型的關係運算直接查詢到某一物件要高效的多得多。但如果我們這樣做了,我們將不得不失去另外一些東西,那就是在物件模型中「導航」的過程既是業務邏輯的體現也是通過物件模型求解的過程。而現在你只能把這些揉碎摻雜到一條sql中去了。你不能否認的是,在不考慮效能的前提下,通過導航找到乙個物件要比一條sql來得自然的多。這也是我認為or關係中最難以調和的矛盾。

由大集合的對映引出的深層的OR不匹配問題

很多優秀的orm工具只解決了物件模型和關係模型在結構上的不匹配問題,但是在行為層面上,這兩種模型也有著各自不同的運作方式,這種不匹配似乎更難以彌合。在乙個典型的一對多關聯中,如果多方是乙個數量巨大的集合,那麼幾乎在任何情況下,我們都不能直接載入這個集合到記憶體中,進而也就不會有基於這個集合的任何遍歷...

JList的使用大集合

jlist listmodel jtable tablemodel jcombobox comboboxmodel jtree treemodel 各類text控制項 document listmodel swing首先定義了介面listmodel 然後定義了抽象類abstractlistmodel...

雷人的歌名大集合

1.王心凌 愛你 s.h.e 我愛你 beyond 真的愛你 李宗盛 我是真的愛你 言承旭 我是真的真的很愛你 點評 有這麼這麼複雜麼?2.王菲 如果你是假的 鄧麗君 假如我是真的 蕭正楠 假如我是假的 孟庭葦 真的還是假的 點評 靠,能退貨麼?3.成龍 我是誰 蟑螂 忘了我是誰 蔡依林 你是誰 許...