it-swarm.com.ru

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

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

216
ravinikam

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

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

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

104
skaffman

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

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

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

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

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

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

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

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

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

  • JMapper : создание картографического компонента с использованием аннотации, XML или API

  • Smooks : JavaBean-картридж Smooks позволяет создавать и заполнять объекты 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 вы можете копировать любые данные из любого объекта в любой другой объект. Возможности безграничны. Добро пожаловать в "Осень". (кажется мертвым)

371
Pascal Thivent

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

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

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

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

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

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

30
Tomas

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

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

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

http://modelmapper.org

21
Jonathan

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

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

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

13
Pablojim

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

6
Dmitry

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

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

С JMapper вы можете:

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

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

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

2
Geoffrey Wiseman

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

2
Ivan