[java] 자바 객체 대 객체 매핑을위한 도구? [닫은]

java를 사용하여 DO를 DTO로 변환하려고 시도하고 자체 작성을 시작하기 전에 자동화 된 도구를 찾고 있습니다. 나는 무료로 사용할 수있는 무료 도구가 있는지 알고 싶었습니다.



답변

당신은 Dozer를 시도 할 수 있습니다.

Dozer는 한 객체에서 다른 객체로 데이터를 재귀 적으로 복사하는 Java Bean to Java Bean 매퍼입니다. 일반적으로 이러한 Java Bean은 다른 복합 유형입니다.

Dozer는 단순 특성 맵핑, 복합 유형 맵핑, 양방향 맵핑, 암시 적 명시 적 맵핑 및 재귀 맵핑을 지원합니다. 여기에는 요소 레벨에서 맵핑해야하는 맵핑 콜렉션 속성도 포함됩니다.


답변

주변에는 몇 가지 라이브러리가 있습니다.

  • Commons-BeanUtils : ConvertUtils-> 문자열 스칼라 값을 지정된 클래스의 객체로 변환하는 유틸리티 메소드, 문자열 배열은 지정된 클래스의 배열로 변환합니다.

  • Commons-Lang : ArrayUtils-> 배열, int []와 같은 기본 배열 및 Integer []와 같은 기본 래퍼 배열에 대한 작업.

  • 스프링 프레임 워크 : Spring은 PropertyEditors를 훌륭하게 지원하며, 객체를 문자열로 /로부터 변환하는 데에도 사용할 수 있습니다.

  • Dozer : Dozer는 강력하면서도 간단한 Java Bean to Java Bean 매퍼로서 한 오브젝트에서 다른 오브젝트로 데이터를 재귀 적으로 복사합니다. 일반적으로 이러한 Java Bean은 다른 복합 유형입니다.

  • ModelMapper : ModelMapper는 자동으로 객체를 서로 매핑하는 지능형 객체 매핑 프레임 워크입니다. 특정 사용 사례를 처리하기위한 간단한 리팩토링 안전 API를 제공하면서 규칙 기반 접근 방식을 사용하여 객체를 매핑합니다.

  • MapStruct : MapStruct는 Bean 맵핑을위한 컴파일 타임 코드 생성기이므로 런타임시 빠른 (반사 또는 이와 유사한 사용법이 없음) 종속성이없고 유형이 안전한 맵핑 코드를 생성합니다.

  • Orika : Orika는 바이트 코드 생성을 사용하여 최소한의 오버 헤드로 빠른 매퍼를 만듭니다.

  • Selma : 매핑을위한 컴파일 타임 코드 생성기

  • JMapper : 콩 매퍼 생성 주석, XML 또는 API를 사용하여 (죽은, 마지막으로 업데이트 2 년 전 것)

  • Smooks 다음 Smooks 자바 빈즈 카트리지 만들고 자바 메시지 데이터에서 개체를 채울 수 있습니다 (에 즉, 바인딩 데이터) (제안 superfilin 의견). (더 이상 적극적으로 개발하지 않음)

  • Commons-Convert : Commons-Convert는 한 유형의 오브젝트를 다른 유형으로 변환하는 태스크 전용의 단일 라이브러리를 제공하는 것을 목표로합니다. 첫 번째 단계는 Object to String 및 String to Object 변환에 중점을 둡니다. (죽은 것, 마지막 업데이트 2010)

  • Transmorph : Transmorph은 한 유형의 Java 객체를 다른 유형의 객체로 변환하는 데 사용되는 무료 Java 라이브러리입니다 (다른 서명을 사용하여 매개 변수화 가능). (죽은 것으로 보인다, 마지막 업데이트 2013)

  • EZMorph : EZMorph는 Object를 다른 Object로 변환하기위한 간단한 Java 라이브러리입니다. 그것은 DynaBeans와 다차원 배열 및 변환을위한 기본 요소와 객체에 대한 변환을 지원 (것 죽은, 지난 2008 업데이트)

  • Morph : Morph는 애플리케이션의 내부 상호 운용성을 용이하게하는 Java 프레임 워크입니다. 정보가 응용 프로그램을 통해 흐르면 정보가 여러 번 변환됩니다. Morph는 이러한 변환을 구현하는 표준 방법을 제공합니다. (죽은 것, 마지막 업데이트 2008)

  • Lorentz : Lorentz는 일반적인 객체 간 변환 프레임 워크입니다. 한 유형의 Java 오브젝트를 다른 유형의 오브젝트로 변환하는 간단한 API를 제공합니다. (죽은 것처럼 보인다)

  • OTOM : OTOM을 사용하면 모든 객체에서 다른 객체로 데이터를 복사 할 수 있습니다. 가능성은 끝이 없습니다. “가을”에 오신 것을 환영합니다. (죽은 것처럼 보인다)


답변

– 또 다른 하나는 Orika입니다 https://github.com/orika-mapper/orika

Orika는 한 객체에서 다른 객체로 데이터를 재귀 적으로 복사하는 Java Bean 매핑 프레임 워크입니다. 다층 애플리케이션을 개발할 때 매우 유용 할 수 있습니다.

Orika는 가능한 한 자동화에 초점을 맞추고 필요한 경우 구성 및 확장을 통해 사용자 지정을 제공합니다.

Orika를 통해 개발자는 다음을 수행 할 수 있습니다.

  • 복잡하고 깊이 구조화 된 객체 매핑
  • 중첩 된 속성을 최상위 속성에 매핑하거나 그 반대로 “Flatten”또는 “Expand”개체
  • 매퍼를 즉시 생성하고 사용자 정의를 적용하여 일부 또는 모든 매핑을 제어
  • 유형별 또는 특정 속성 이름별로 객체 그래프의 특정 위치에 대한 특정 객체의 매핑을 완벽하게 제어 할 수있는 변환기를 만듭니다.
  • 프록시 또는 고급 개체 (Hibernate 또는 다양한 모의 프레임 워크와 같은) 처리
  • 하나의 구성으로 양방향 매핑 적용
  • 대상 추상 클래스 또는 인터페이스에 적합한 구체적인 클래스의 인스턴스에 매핑
  • 역 매핑 처리
  • JavaBean 스펙 이외의 복잡한 규칙을 처리하십시오.

Orika는 바이트 코드 생성을 사용하여 최소한의 오버 헤드로 빠른 매퍼를 만듭니다.


답변

ModelMapper 는 체크 아웃 할 가치가있는 또 다른 라이브러리입니다. ModelMapper의 디자인은 다음과 같은 점에서 다른 라이브러리와 다릅니다.

  • 소스 및 대상 속성을 지능적으로 일치시켜 개체 모델을 자동으로 매핑
  • 문자열을 사용하지 않고 실제 코드를 사용하여 필드와 메소드를 맵핑하는 리팩토링 안전 맵핑 API를 제공합니다.
  • 사용자 지정 시나리오를 간단하게 처리하기 위해 컨벤션 기반 구성을 활용합니다.

자세한 정보는 ModelMapper 사이트를 확인하십시오.

http://modelmapper.org


답변

Apache commons beanutils를 사용하십시오.

static void copyProperties(Object dest, Object orig)
-속성 이름이 동일한 모든 경우에 대해 원본 Bean에서 대상 Bean으로 특성 값을 복사하십시오.

http://commons.apache.org/proper/commons-beanutils/


답변

Java 맵핑 엔진 / 프레임 워크 Nomin이 하나 더 있습니다 ( http://nomin.sourceforge.net) .


답변

JMapper Framework 를 사용해보십시오 .

Java bean에서 Java bean mapper로 주석 및 / 또는 XML을 사용하여 데이터를 동적으로 전달할 수 있습니다.

JMapper를 사용하면 다음을 수행 할 수 있습니다.

  • 대상 객체 생성 및 보강
  • 특정 논리를 매핑에 적용
  • XML 파일 자동 관리
  • 1 대 N 및 N 대 1 관계 구현
  • 명시 적 전환 구현
  • 상속 된 구성 적용