簡體   English   中英

使用Web Service客戶端JAXB生成的類作為JPA實體

[英]Using Web Service Client JAXB Generated Classes as JPA Entities

我正在研究一個從SOAP Web服務檢索數據並將其存儲在數據庫中以供以后使用JPA使用的項目。 當前,我使用Spring WS作為客戶端,並使用JAXB生成Web服務類。

目標是忠實地在數據庫中復制這些類(相當大)中包含的所有數據,因此,將JPA批注應用於JAXB生成的類是很誘人的。 從長遠來看,這似乎很危險,因為生成的類看起來很短暫,而且如果wsdl發生更改,我將在重新生成jpa批注的同時進行大量工作,同時重新生成代碼。

另一個選擇是讓我的Web服務客戶端將數據復制到我創建的JPA實體中,可能使用工廠模式。 這使JPA持久性與WSDL設計器可能改變的想法分離開來,並且感覺更安全。 由於實體類永遠不會被構建任務覆蓋,因此它也更安全。

在這種情況下,最佳做法是什么? 顯然,過度的去耦在意味着大量數據傳輸對象時並沒有得到回報,但是這種情況特殊嗎? JAXB創建的類是否應該僅在Web服務客戶端中使用,並很快被更高級別的應用程序所忘記?

作為原則,請勿更改JAXB生成的對象。 正如您非常正確地指出的那樣,隨着WSDL的每次微小更改,這些都會更改。

最可接受的過程是將JAXB對象和JPA實體分離。 一樣會有兩個主要優點

  1. 如果您覺得JAXB太慢或太占用內存,則可以在以后的時間更改數據綁定提供程序。
  2. 您沒有將JPA代碼與數據庫代碼綁定在一起。 因此,如果明天您的WSDL更改或數據庫結構更改,那么這兩個都不受影響。

要在兩者之間傳輸數據,您可以使用工廠模式或使用Bean映射框架,例如

  1. 推土機
  2. Orika
  3. 其他選擇

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM