在我的開發項目中,我使用JPA(hibernate)作爲數據庫訪問的OR映射技術。當我將數據庫表映射到實體時,有時會遇到性能問題和技術難題,從而導致複雜的關係。將SQL視圖映射到JPA實體
我發現一個解決方法是將DB視圖映射到JPA實體。這使得編碼更容易,有時性能更好。你認爲這是以這種方式使用JPA的反模式嗎?
在我的開發項目中,我使用JPA(hibernate)作爲數據庫訪問的OR映射技術。當我將數據庫表映射到實體時,有時會遇到性能問題和技術難題,從而導致複雜的關係。將SQL視圖映射到JPA實體
我發現一個解決方法是將DB視圖映射到JPA實體。這使得編碼更容易,有時性能更好。你認爲這是以這種方式使用JPA的反模式嗎?
這不是一個解決方法,也不是反模式。mapping JPA Entities to SQL Views有一個話題。 它給你足夠的信息是否使用這種方法或不。
個人而言,我更喜歡Java類,因此我使用Result Classes Constructor Expression。它基於結果查詢返回實例化並填充提供的類的對象。
您可以查看這兩種提高性能並降低結構複雜度的方法。
我也喜歡將結果映射到結果類,但是我對自定義實體方法有些疑問。根據規範,JPA實體必須有一個'@ Id'字段;但是,您可以擁有包含重複記錄的視圖。你如何處理這種情況? –
這是一個很好的問題。你認爲從視圖的多列創建一個哈希列會有幫助嗎?它可以作爲主要關鍵。 – JMelnik
@JMelnik我也很想用Java類來實現。我有一個關於構造器表達式的問題,我的問題是如果使用構造器表達式,ORDER BY屬性是如何使用的?看到例如[這](http://stackoverflow.com/questions/33852430/jpql-not-a-selected-expression-error)我有一個複雜的查詢,我無法做ORDER BY – user75ponic
我對JMelnik友情提供的鏈接存在問題: 我在Javadb中創建了一個View作爲複雜查詢,然後嘗試將視圖拖到窗體上,但是Netbeans不允許我放棄它(因此我可以不自動創建綁定表,我看到該鏈接,我不是一個誰經歷過這是唯一一個爲我工作
解決方案:。
在數據庫創建視圖,爲您的複雜SQL聯接
「在數據庫中創建實體」在實體包中,並將其命名爲xxxViewName
導航器創建Java持久性查詢:
確保外形設計是可見的,然後用鼠標右鍵單擊導航「其他組件」,然後選擇添加從調色板> Java持久性>查詢
配置查詢:不要使用通常的「show xxxViewName」(由於JPA不支持show而失敗)。使用select w在xxxViewName W」
創建導航器的Java Persistence結果列表:
綁定。你的JTable到列表中。
不,它不是,它爲什麼會這樣? –
不管怎樣對你更好的顯然不是「反模式」。 tter for you ... – DataNucleus