Я пытаюсь преобразовать DO в DTO с помощью java и искать автоматическое средство, прежде чем начинать писать свои собственные. Я просто хотел узнать, доступен ли какой-либо бесплатный инструмент для него.
Любой инструмент для 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 для получения дополнительной информации:
Ответ 5
Использование общих ресурсов Apache beanutils:
static void copyProperties(Object dest, Object orig)
-Копировать значения свойств из начала bean в пункт назначения bean для всех случаи, когда имена свойств являются то же самое.
Ответ 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
Ответ 10
Попробуйте OMapper.. http://code.google.com/p/omapper/