2016-08-05 2 views
0

중첩 된 객체가 있습니다. 의는 그들을 부르 자, B와 C중첩 된 객체 매핑 (Java)

public class A { 
    private String name; 
    private String desc; 
    //......{some other fields} 
    private List<B> bList; 
} 

public class B { 
    private String name; 
    private String desc; 
    //......{some other fields} 
    private List<C> cList; 
} 


public class C { 
    private String name; 
    private String desc; 
    ......{some other fields} 
} 

는 지금은 그 개체의 일부 속성을 매핑 할. A에서 B의 이름과 목록 만 원하고 B에서 C의 목록 만 있고 C에서만 desc의 목록 만 원한다고 가정합시다. 그래서 DTO 개체를 만듭니다.

public class ADTO{ 
    private String name; 
    List<BDTO> bList; 
} 

public class BDTO{ 
    List<CDTO> cList; 
} 

public class CDTO{ 
    private String desc; 
} 

그리고 수동과 유사한 코드를 CDTO에 ADTO, BDTO에 B와 C에 대한지도 것 :

private ADTO map(A a) 
    ADTO adto = new ADTO(); 
    List<BDTO> bDTOList = new ArrayList<>(); 
    adto.setName(a.getName()); 
    for (B b : a.getBlist()){ 
     BDTO bdto = new BDTO(); 
     bdto.setCList = map(b.getCList()); 
     bDTOList.add(bdto); 
    } 
    adto.setBList(bDTOList); 
    return adto; 
} 
private List<CDTO> map(List<C>){ 
........ANOTHER BORING MAPPING 
} 

어떤 쉬운 방법이 있나요 (일부 디자인 패턴은 어쩌면) 구현 그런 과업? 깊은 중첩으로 매핑하기 위해 훨씬 더 큰 클래스 나 더 많은 객체가 있다면 어떻게 될지 상상해보십시오. 일부 필드를 표시/숨기기 위해서만 작성하는 코드가 많습니다. 오후 8시 30 분 P.S. 그러한 대상에 대해 최소한 3 가지 다른 "견해"를 작성해야하며 향후 견해의 수는 증가 할 수 있습니다. 그래서 나는 미래에 새로운 "보기"를 더 쉽게 추가 할 수있는 솔루션을 찾고 있습니다.

답변

0

Dozer이 오픈 소스 프로젝트를 시도해보십시오.이 문제를 쉽게 해결할 수 있습니다.