[英]How to efficiently load objects with lists from sql-databases
假設我有以下課程:
class Example {
List<ObjectA> objectsOfA;
List<ObjectB> objectsOfB;
List<ObjectC> objectsOfC;
....
}
我通常會有這些表:
Example
(Id,其他屬性) ObjectA
(某些屬性,ExampleId) ObjectB
(某些屬性,ExampleId) ObjectC
(某些屬性,ExampleId) 如果我想還原Example
-object,我想我有兩個選擇:
Example
並為每個示例執行對ObjectA
, ObjectB
, ObjectC
列表的單個請求。 如果Example
-entries的數量很少,則option2可能是最好的。 但是對於Example
每個單個條目,我需要執行x個以上的請求,其中x是類中表的數量。
否則,將所有內容都放在一個聯接中就需要我自己重新組織所有數據-創建哈希表,遍歷數據和內容,這通常是代碼中的大量工作。
我還可以通過選項2進行延遲加載。
我還有其他選擇嗎? 我錯過了什么? (我當然知道ORM,但是我決定在Android上不使用它們)
如果我正確理解,您的問題是,從主表和相關表中加載數據哪種方法更好:
除非您對帶寬有極大的限制,否則我會說選項1很簡單,我會同意的。 讓數據庫進行連接更容易,而在Java中,只需將記錄映射到對象即可。
如果節省數據庫的帶寬很重要,那么選項2會更好,因為每條數據將只獲取一次而不會重復,因為選項中的JOIN結果實際上是非規范化數據。
無論如何,我建議您使用Occam的剃刀 :最簡單的解決方案通常是最好的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.