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

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

Ответ 1

Вы можете попробовать Dozer.

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

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

Ответ 2

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

  • 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: Orika использует генерацию байтового кода для создания быстрых картографов с минимальными издержками.

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

  • JMapper: Генерация Bean Mapper с использованием аннотаций, XML или API

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

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

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

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

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

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

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

Ответ 3

Другой - Orika - https://github.com/orika-mapper/orika

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

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

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

  • Карта сложных и глубоко структурированных объектов
  • "Сгладить" или "Развернуть" объекты, сопоставляя вложенные свойства с свойствами верхнего уровня и наоборот
  • Создавайте картотеки "на лету" и применяйте настройки для управления некоторым или всем отображением.
  • Создайте конвертеры для полного контроля над отображением определенного набора объектов в любом месте графика объекта - по типу или даже по имени конкретного свойства
  • Обработать прокси или расширенные объекты (например, Hibernate или различные фреймворки)
  • Применение двунаправленного отображения с одной конфигурацией
  • Отображение экземпляров соответствующего конкретного класса для целевого абстрактного класса или интерфейса.
  • Обрабатывать обратные сопоставления
  • Обработка сложных соглашений за пределами спецификаций JavaBean.

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

Ответ 4

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

  • Автоматически отображает модели объектов, разумно сопоставляя исходные и целевые свойства
  • Предоставляет API безопасного сопоставления refactoring, который использует фактический код для сопоставления полей и методов, а не с использованием строк
  • Использует конфигурацию, основанную на соглашениях, для простой обработки пользовательских сценариев

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

http://modelmapper.org

Ответ 5

Использование общих ресурсов Apache beanutils:

static void copyProperties(Object dest, Object orig)-Копировать значения свойств из начала bean в пункт назначения bean для всех случаи, когда имена свойств являются то же самое.

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

Ответ 6

Существует еще один механизм/структура отображения Java Nomin: http://nomin.sourceforge.net.

Ответ 7

Я предлагаю вам попробовать JMapper Framework.

Это Java-конструктор Java bean для Java bean, который позволяет динамически передавать данные с помощью аннотаций и/или XML.

С помощью JMapper вы можете:

  • Создание и обогащение целевых объектов
  • Применить конкретную логику к отображению
  • Автоматическое управление XML файлом
  • Внедрение отношений от 1 до N и от N до 1
  • Реализация явных преобразований
  • Применить унаследованные конфигурации

Ответ 8

Я рад добавить Moo в качестве опции, хотя я явно склонен к этому: http://geoffreywiseman.github.com/Moo/

Он очень прост в использовании для простых случаев, разумно способных к более сложным случаям, хотя есть еще некоторые области, где я могу себе представить, как улучшить его для еще более сложных проблем.

Ответ 9

Вы также можете попробовать сопоставить фреймворк на основе Dozer, но с объявлением сопоставления Excel. У них есть инструменты и дополнительные интересные функции. Проверьте http://openl-tablets.sf.net/mapper