Вопрос-ответ

any tool for java object to object mapping? [closed]

любой инструмент для сопоставления объектов Java с объектами?

Я пытаюсь преобразовать DO в DTO с помощью Java и ищу автоматизированный инструмент, прежде чем начать писать свой собственный. Я просто хотел узнать, доступен ли какой-либо бесплатный инструмент для того же.

Переведено автоматически
Ответ 1

Там есть несколько библиотек:


  • Commons-BeanUtils: ConvertUtils -> Служебные методы для преобразования строковых скалярных значений в объекты указанного класса, строковых массивов в массивы указанного класса.


  • Commons-Lang: ArrayUtils -> Операции с массивами, примитивными массивами (например, int[]) и примитивными массивами-оболочками (например, Integer[]).


  • Spring framework: Spring имеет отличную поддержку PropertyEditors, которые также можно использовать для преобразования объектов в строки / из них.


  • Dozer: Dozer - это мощный, но простой Java Bean для сопоставления Java Bean, который рекурсивно копирует данные с одного объекта на другой. Как правило, эти Java-компоненты будут разных сложных типов.


  • ModelMapper: ModelMapper - это интеллектуальная платформа сопоставления объектов, которая автоматически сопоставляет объекты друг с другом. Он использует основанный на соглашениях подход к сопоставлению объектов, предоставляя простой безопасный для рефакторинга API для обработки конкретных вариантов использования.


  • MapStruct: MapStruct - это генератор кода во время компиляции для bean-сопоставлений, что приводит к быстрому (без использования отражения или подобного), не зависящему и типобезопасному отображению кода во время выполнения.


  • Орика: Orika использует генерацию байт-кода для создания быстрых картографов с минимальными накладными расходами.


  • Selma: генератор кода для сопоставлений во время компиляции


  • JMapper: генерация Bean mapper с использованием аннотаций, XML или API (кажется мертвым, последнее обновление 2 года назад)


  • Smooks: Картридж Smooks JavaBean позволяет вам создавать и заполнять объекты Java из данных вашего сообщения (т. Е. Привязывать данные к) (предложено superfilin в комментариях). (Больше не находится в активной разработке)


  • Commons-Convert: Цель Commons-Convert - предоставить единую библиотеку, предназначенную для преобразования объекта одного типа в другой. Первый этап будет сосредоточен на преобразованиях объекта в строку и строки в объект. (кажется мертвым, последнее обновление 2010)


  • Transmorph: Transmorph - это бесплатная библиотека java, используемая для преобразования объекта Java одного типа в объект другого типа (с другой сигнатурой, возможно параметризованной). (кажется мертвым, последнее обновление 2013)


  • EZMorph: EZMorph - это простая библиотека java для преобразования объекта в другой объект. Он поддерживает преобразования для примитивов и объектов, для многомерных массивов и преобразования с помощью DynaBeans (кажется мертвым, последнее обновление 2008)


  • Morph: Morph - это платформа Java, которая упрощает внутреннюю совместимость приложения. По мере прохождения информации через приложение она подвергается множеству преобразований. Morph предоставляет стандартный способ реализации этих преобразований. (кажется мертвым, последнее обновление 2008)


  • Lorentz: Lorentz - это универсальный фреймворк преобразования объекта в объект. Он предоставляет простой API для преобразования объектов Java одного типа в объекты другого типа. (кажется мертвым)


  • OTOM: С помощью OTOM вы можете копировать любые данные из любого объекта в любой другой объект. Возможности безграничны. Добро пожаловать на "Осень". (кажется мертвым)


Ответ 2

Вы могли бы попробовать Dozer.


Dozer - это средство сопоставления Java Bean с Java Bean, которое рекурсивно копирует данные с одного объекта на другой. Как правило, эти Java Bean будут разных сложных типов.


Dozer поддерживает простое сопоставление свойств, сопоставление сложных типов, двунаправленное сопоставление, неявно-явное сопоставление, а также рекурсивное сопоставление. Это включает сопоставление атрибутов коллекции, которые также нуждаются в сопоставлении на уровне элемента.


Ответ 3

Еще один - Orika - https://github.com/orika-mapper/orika


Orika - это платформа сопоставления Java Bean, которая рекурсивно копирует (среди прочих возможностей) данные с одного объекта на другой. Это может быть очень полезно при разработке многоуровневых приложений.


Orika фокусируется на максимальной автоматизации, обеспечивая при необходимости индивидуальную настройку с помощью конфигурации и расширения.


Orika позволяет разработчику :



  • Отображение сложных и глубоко структурированных объектов

  • "Сглаживать" или "расширять" объекты путем сопоставления вложенных свойств со свойствами верхнего уровня и наоборот

  • Создавайте картографы "на лету" и применяйте настройки для управления некоторыми или всеми отображениями

  • Создавайте преобразователи для полного контроля над отображением определенного набора объектов в любом месте графа объектов - по типу или даже по определенному имени свойства

  • Обрабатывает прокси или расширенные объекты (например, в Hibernate или различных макетных фреймворках)

  • Примените двунаправленное сопоставление с одной конфигурацией

  • Сопоставьте экземпляры соответствующего конкретного класса для целевого абстрактного класса или интерфейса

  • Обрабатывает обратные сопоставления

  • Обрабатывает сложные соглашения, выходящие за рамки спецификаций JavaBean.


Orika использует генерацию байт-кода для создания быстрых картографов с минимальными накладными расходами.


Ответ 4

My ModelMapper - еще одна библиотека, которую стоит проверить. Дизайн ModelMapper отличается от других библиотек тем, что он:


  • Автоматическое сопоставление объектных моделей путем разумного сопоставления свойств источника и назначения

  • Предоставляет безопасный для рефакторинга API сопоставления, который использует реальный код для сопоставления полей и методов, а не строки

  • Использует конфигурацию на основе соглашений для простой обработки пользовательских сценариев

Посетите сайт ModelMapper для получения дополнительной информации:

http://modelmapper.org

java