2016-06-07 3 views
0

오브젝트를 다른 오브젝트로 변환해야합니다. 오브젝트는 많은 내부 오브젝트를 중첩했습니다. 그러나 소스 오브젝트와 대상 오브젝트는 모두 데이터 유형, 변수 이름, 클래스 이름 등으로 동일합니다. 적은 코딩으로 그렇게 할 수있는 효과적인 도구가 있습니까?제 2 자 라이브러리가있는 자바에서 두 개의 동일한 클래스 매핑하기

나는 orika 시도했지만 그것은 fields.I이 반복자의 많은 및 제출 매핑을 설정하여 결국 같은 모든 필드와 내부 객체

factory.registerClassMap(factory 
       .classMap 

아래 정의하는 기대.

도와주세요. 가이드 개체가 동일한 개체를 다른 방법으로 매핑 할 수 있습니까?

+0

을 확인, 당신은, 당신이 아파치 평민을 시도 할 수 또는 여기에 [확인 내부 참조가 개체를 복제 할 ] (http://stackoverflow.com/questions/9264066/beanutils-clonebean-deep-copy) 답변, 그렇지 않으면 커스텀 DeepCopy 메소드를 구현해야합니다. – AntJavaDev

+0

아니요 객체를 복제하고 싶지 않습니다. POJO와 JAXB가 있습니다. POJO에서 JAXB – Ramkumar

+0

으로 값을 설정해야합니다. 그러면 pojo 객체가 있고 JAXB 객체로 복제 할 것입니다. 만약 당신이 말한 것과 같고 패키지 이름 만 바꾼다면 s – AntJavaDev

답변

0

MapStruct을 살펴볼 수 있습니다.

또 다른 대안은 Dozer입니다. 매퍼 XML 파일 속성 wildcard="true"에 정의하여 클래스를 1 대 1로 매핑 할 수 있습니다. 즉, 두 객체의 모든 속성을 자동으로 매핑하려고합니다. 속성을 false로 설정하면 명시 적으로 정의 된 필드 만 매핑됩니다. 내가 정확하게 문제를 이해한다면

<?xml version="1.0" encoding="UTF-8"?> 
<mappings xmlns="http://dozer.sourceforge.net" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation="http://dozer.sourceforge.net 
      http://dozer.sourceforge.net/schema/beanmapping.xsd"> 

    <mapping wildcard="true"> 
     <class-a>org.example.ObjectA</class-a> 
     <class-b>org.example.ObjectB</class-b> 
    </mapping> 
</mappings> 
+0

에는 Mapstruct를 사용하여 두 개의 동일한 객체를 매핑하는 예제가 있습니다. – Ramkumar

+0

1 대 1 매핑이 거의 완료된 다른 매핑 프레임 워크가 포함됩니다. – uniknow

+0

죄송합니다. spring servlet 3 응용 프로그램에서 xml 파일을 사용하고 있지 않습니다. – Ramkumar