문제

나는 Java 기업 응용 프로그램을 제공하는 web 서비스,도메인 레이어와 지속성을 최대 절전 모드 레이어입니다.이 특정한 경우에 없을 거대한 차이는 순간에()개체간을 보내 와이어를 통해,도메인의 개체,그리고 지속성 개체입니다.

현재 응용 프로그램을 사용하 DTO 의 지속성 측면에 주석을 추가하는 도메인 클래스를 포함할 수 있습니다.그러나 내가 읽고 생각하는,그것에 대해 더 많은 이것은 거꾸로!(을 언급하지 않는 많은 코드를 지원하는 상대를 앞뒤로 사 DTO 의 도메인 개체입니다.) 그것은 보인다 가장 좋아하는 건축가 제안 puting JPA 에 주석을 도메인 모델을 만들 DTO 의를 위해 보내는 객체를 통해 있습니다.

제 경우에 넣을 수 있을 모두 포함하고 JPA(최대 절전 모드)주석을 도메인 클래스가?

생각을 유지하는 웹 서비스 외관,도메인,그리고 나의 고집이 모든 단단히 묶 함께 보인 유지하기 쉬운,그러나 저를 걱정으로 이러한 변경이 필요할 수 있습니다.하지만 똑똑하게 만들의 집합 DTO 클래스를 위한 웹 서비스 측 및 건너뛰기 DTO 의 지속성에 대한 측면?

도움이 되었습니까?

해결책

JPA 및 JAXB 주석 모두에 동일한 클래스에 주석을 달지 않는 기능적 이유는 없으며 가끔 직접 해냈습니다. 그러나 읽기가 조금 어려워지고 때로는 JAXB 및 JPA와의 다른 클래스 디자인 트레이드 오프를 원합니다. 내 경험상, 이러한 상충 관계는 일반적으로 두 가지 클래스 모델로 끝나는 것을 의미합니다.

다른 팁

동의 동일한 모형을 사용하여 클래스 올바른 방법입니다.당신이 우려에 대한 주석 혼란을 사용할 수 있습니다 포함 구현(등 EclipseLink 포함)을 제공하는 메커니즘에 대한 구체화 메타데이터:

또한 이를 사용하고 있 JPA 모델 EclipseLink 포함(MOXy)는 확장자를 만들기 위한 이 쉽게:

여기서의 예를 사용하여 하나의 모델에 포함&JPA 을 만드는 편안하는 서비스:

같은 클래스에서 두 주석을 모두 사용하는 데 아무런 문제가 없습니다. 변경이 발생할 때 복사 할 필요가 없기 때문에 이것을 장려하는 경향이 있습니다. 경우에 따라 일부 속성은 동작이 다릅니다. 예를 들어 자동 생성 ID는 마샬링 될 필요가 없을 수 있습니다. @XmlTransient 그리고 @Transient 그런 다음 결합됩니다. 모든 주석의 의미가 분명하기 때문에 읽기가 조금 어려워 지지만 너무 어렵지는 않습니다.

웹 서비스 XML 구조를 정의하기 때문에 Atom Link Objects를 지속적으로 도메인에 넣고 싶은 사람이 있습니까? 이것을하는 것은 나에게 이상한 것 같습니다. 증오 도아 링크는 좋은 아이디어처럼 보이지만 지속 된 도메인과 서비스 임프 (웹 서비스가 아님)는 원자 링크에 관심이 없습니다. 그런 다음 XML 주석을 사용하고 저지가 내 도메인을 직렬화하는 것이 확실히 편리합니다. 그러나이 접근법의 또 다른 단점은 지속성 도메인 "레이어"리팩토링을 통해 런타임에서 웹 서비스 소비자에게 쉽게 영향을 미치는 것입니다.

나는이 질문이 조금 늙었다는 것을 알고 있지만, 나는 이것이 내가 최근에 접한 문제이기 때문에 어쨌든 무게를 측정했다고 생각했다. 스키마 변경에는 이러한 클래스를 다시 생성해야하므로 JAXB 주석은 클래스 만 남겨 두는 것이 좋습니다. 즉, 최대 절전 모드 주석 등을 다시 입력해야합니다. 수동으로. 이것은 약간의 오래된 솔루션 일 수 있지만, 매핑을 외부로 수용하기 위해 최대 절전 모드 매핑 파일 (.hbm.xml)을 만드는 것이 완벽하게 합리적이라고 생각합니다. 이것은 조금 더 유연하고 덜 어수선하며 내 의견으로는 유용합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top