我有 3 個實體 i。資產(PK 資產_id,FK 類別_id) ii. 類別(PK category_id, FK: size_id) iii. 尺寸(PK size_id)現在每個資產都屬于一個類別(多對一)并且每個類別都有一個大小(多對一)我調用 Asset.getCategory(),它會調用 (SELECT * from category) 并且調用 Caegory.getSize() 會調用到 (SE:ECT * from size)因此,OOP 中的單個實體檢索進行了 3 個 DB 調用,就像我在 DB 調用上編寫的連接查詢一樣。讓我想知道,為什么我們使用 ORM。
1 回答
波斯汪
TA貢獻1811條經驗 獲得超4個贊
你的假設是錯誤的。在 JPA 中,您可以使用“fetch”關鍵字來查詢整個對象圖,這基本上可以在一次查詢中獲取數據庫中的所有數據。所以你會做類似的事情
entityManager.createQuery("select asset from Asset asset join fetch asset.category cat join fetch cat.size size");這將在一個查詢中獲得帶有其類別的資產,以及帶有其大小的類別。除了這 3 個表非常少之外,您通??梢允褂没具B接連接更多的表,而不會出現性能問題。
添加回答
舉報
0/150
提交
取消
