2010-08-08 2 views
2

우리는 DTO를 사용하여 프리젠 테이션 레이어에서 데이터를주고받습니다.JPA와 DTO의 DTO를 만드는 가장 좋은 방법은 무엇입니까?

나는 서비스 개체의 방법은 광고가 사용자가 입력하는 게시물 PostAd라고합니다. Ad 내가 DTO 아키텍처가 간다까지 더 궁금 해요 Ad 값을 포함 AdValues라는 또 다른 객체 (제목, 가격, 설명 등)

@Entity 
public class Ad { 
    @OneToMany 
    Set<AdValue> values ... 
    ... 

에 대한 연관이 있습니다

  1. 는 DTO의 하나 ~ PostAd(AdDTO, AdValuesDTO)AdDTOAdValuesDTO라는 다른과 통화 PostAd 방법이라고 나 ~

  2. 이있다 그런 다음 PostAd 방법은 PostAd(AdDTO)

    라고한다

    AdDTO { 
        Set<AdValuesDTO> adValues ... 
    

또는 거기에 또 다른입니다 :

  • 이는 DTO의 내 DTO의를 가진 포함 ... 기업 구조를 흉내 AdValuesDTO을 포함하는 AdDTO 되세요 대안?

  • 답변

    8

    두 가지 방법 모두 사용할 수 있지만 이후 방법을 사용하면 DT30을 사용하여 서버 을 서버에서 클라이언트로 보낼 수 있습니다. 그리고 DTO를 가지고 있기 때문에 이미 유지 보수가 어렵고 비용이 많이 들기 때문에 예수님처럼 빵처럼 빵을 번식하고 싶지는 않습니다.

    그래서, 내 경험에, 당신은 DTO들을 사용할 때, 당신은 실제로 당신이 클라이언트와 서버 간의 양방향으로 사용할 수있는 엔티티의 병렬 대칭 구조를 갖는 끝. 그리고 이것은 Dozer과 같은 매핑 솔루션의 사용을 가능하게합니다. 적어도 DTO를 덜 고통스럽게 만드는 것은 환영합니다.

    +2

    덕분에, 나는 당신의 충고를 따랐다 내 POM에 도저를 추가하고, 보일러 플레이트 코드의 75 % .. –

    +0

    하나의 힌트 삭제 관리 : 멀리 도저에서 숙박. 캡슐화를 중단해야하며, 무엇인가가 실패하면 컴파일 타임 대신 런타임에 발생합니다. 현재 xml (= xml 지옥)을 기반으로합니다. 그리고 마지막으로 중요한 것은 : Dozer is sloooooow ... – user2054927

    관련 문제