Какой-либо инструмент для сопоставления объекта 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 для получения дополнительной информации:
Используйте Apache Commons beanutils:
static void copyProperties(Object dest, Object orig)
Копировать значения свойств из исходного объекта в целевой для всех случаев, когда имена свойств совпадают.
Существует еще один движок / фреймворк 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/
Его очень просто использовать для простых случаев, разумно способных к более сложным случаям, хотя есть еще области, где я могу себе представить, как его улучшить для еще большей сложности.