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

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

10 ответов

Решение

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

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

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

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

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

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

  • http://springframework.org/: 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 стремится предоставить единую библиотеку, предназначенную для задачи преобразования объекта одного типа в другой. На первом этапе основное внимание будет уделено преобразованию объектов в строки и строк в объекты. (кажется мертвым, последнее обновление 2010)

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

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

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

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

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

Еще один - Орика - https://github.com/orika-mapper/orika

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

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

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

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

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

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

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

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

http://modelmapper.org/

Используйте Apache Commons beanutils:

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

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

Существует еще один движок / фреймворк Java mapping Nomin: http://nomin.sourceforge.net/.

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

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

С JMapper вы можете:

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

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

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

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

Попробуйте OMapper.. http://code.google.com/p/omapper/

Другие вопросы по тегам