2011-12-09 48 views
1

我想在多個(3個以上)表情況下,JPA使用的一些反饋。JPA使用指南/的EclipseLink/JPA實體發電機

  1. 如何從多個連接表中檢索記錄?使用JPA Join語句,或者通過檢索Collections 並迭代並獲取下一組外鍵集合等等?第二種方式似乎是一種首選的方式,但這是一種真正的痛苦,也是低效的。

  2. 方式的EclipseLink正在生成的關係是有事情級聯的負荷。最重要的是,即使一個簡單的外鍵也被設置爲一個簡單的整數ID。換言之,以提取一個X.fk_of_table_Y我需要調用兩種方法

X.getFKTableY()。getFKtableY()

第一函數返回映射類的對象,而第二個返回整數。糟糕是不是太低效?當你只需要我自己的表的ID時,爲什麼你需要從另一個表中加載對象?

你怎麼做呢?

  1. 你喜歡使用由EclipseLink的產生的方法還是你通常編寫自己的?它基本上與(1)相同,這是我要求的eclipselink環境。

  2. 之外的EclipseLink存在哪些工具來生成代碼?如果我可以使用自己的JPA連接查詢進行關係(如果這是一種很好的方法),我想要將關係映射從EclipseLink不會執行的實體文件中刪除。有沒有一種工具只能生成實體類而不是它們的關係?

  3. 如果我想在每晚都會實體產生自動(或當分貝的變化),通過的EclipseLink,什麼話我有什麼關係?修改源代碼?

原諒我的英文,我可以寫得更好一點。

回答

0

對不起,簡短的回答,這是從一個電話。首先,在EclipseLink中有可能將FK的整數ID和對象本身作爲不同的屬性;只需提供相同的列名稱,但僅將其中一個標記爲可更新和可插入。您將能夠設置與其中一個屬性的關係,但不能同時設置這兩個屬性。其次,我使用具有複雜JPA查詢的實體映射和DAO對象來訪問實體,區別在於我使用多個連接和聚合函數的查詢或需要預取時的查詢,並且在使用實體映射時使用實體映射遍歷實體圖。儘管如此,基準測試在任何地方都是需要的 - 我已經有了一個複雜的查詢,當分解爲實體映射時,查詢更快(60ms vs 300ms)。

+0

謝謝你......對不起,我的名聲還不足以給你一個積極的一面。我會等待更多的答案,併爲其中的一個投票:) – SQC

+0

Tassos,我該如何創建兩列?我在Netbeans中使用eclipselink,但如果有更改它的選項,我很樂意將它安裝到再次重新嘗試。我沒有看到任何選項,當然是因爲我不太瞭解這個工具。 – SQC

+0

你做什麼是你有f.e.'int personId'和'Person person'作爲成員,但是您使用@Column(name =「PERSON_ID」)和@JoinColumn(name =「PERSON_ID」)'給它們使用相同的數據庫列名稱。但是,您需要將'updateable = false,insertable = false'添加到兩個屬性中的一個(我個人更喜歡int)。 –