Я намагаюся перетворити DO на DTO за допомогою Java і шукаю автоматизований інструмент, перш ніж почати писати свій власний. Мені просто хотілося знати, чи є якийсь безкоштовний інструмент для того ж.
Я намагаюся перетворити DO на DTO за допомогою Java і шукаю автоматизований інструмент, перш ніж почати писати свій власний. Мені просто хотілося знати, чи є якийсь безкоштовний інструмент для того ж.
Відповіді:
Ви можете спробувати Dozer .
Dozer - це перетворювач Java Bean to Java Bean, який рекурсивно копіює дані з одного об'єкта на інший. Зазвичай ці Java-боби будуть різних складних типів.
Dozer підтримує просте відображення властивостей, відображення складного типу, двонаправлене відображення, неявне явне відображення, а також рекурсивне відображення. Сюди входять атрибути колекції картографування, які також потребують відображення на рівні елементів.
Тут є кілька бібліотек:
Commons-BeanUtils : ConvertUtils -> Утилітні методи для перетворення рядкових скалярних значень в об'єкти вказаного класу, String масиви в масиви вказаного класу.
Commons-Lang : ArrayUtils -> Операції з масивами, примітивними масивами (як int []) та примітивними масивами обгортки (як Integer []).
Весняний каркас : Spring має чудову підтримку для PropertyEditors, яка також може бути використана для перетворення Об'єктів до / з Струн.
Dozer : Dozer - це потужний, але простий картограф Java Bean to Java Bean, який рекурсивно копіює дані з одного об'єкта на інший. Зазвичай ці Java-боби будуть різних складних типів.
ModelMapper : ModelMapper - це інтелектуальна рамка відображення об'єктів, яка автоматично відображає об'єкти один одному. Він використовує підхід, орієнтований на конвенцію, для відображення об'єктів, надаючи простий API для рефакторингу для обробки конкретних випадків використання.
MapStruct : MapStruct - це генератор коду часу компіляції для відображення квасолі, що призводить до швидкого (без використання відображення чи подібного), без залежностей і безпечного типу картографського коду під час виконання.
Orika : Orika використовує генерацію байтових кодів для створення швидких картографів з мінімальними накладними витратами.
Selma : Генератор коду часу компіляції для відображень
JMapper : Покоління картографів Bean за допомогою Анотації, XML або API (здається, мертвим, останній раз оновлено 2 роки тому)
Smooks : Картридж Smooks JavaBean дозволяє створювати та заповнювати об'єкти Java з ваших даних повідомлення (тобто прив'язувати дані) (запропоновані суперфіліном у коментарях). (Більше не в активному розвитку)
Commons-Convert : Commons-Convert має на меті забезпечити єдину бібліотеку, присвячену завданню перетворення об’єкта одного типу в інший. Перший етап буде зосереджений на перетворенні "Об'єкт в рядок" та "Рядок в об'єкт". (здається мертвим, останнє оновлення 2010 р.)
Transmorph : Transmorph - це безкоштовна бібліотека Java, яка використовується для перетворення об’єкта Java одного типу в об'єкт іншого типу (з іншою підписом, можливо, параметризованою). (здається мертвим, останнє оновлення 2013 р.)
EZMorph : EZMorph - проста бібліотека Java для перетворення Об'єкта на інший Об'єкт. Він підтримує перетворення примітивів та Об'єктів, для багатовимірних масивів та перетворень з DynaBeans (здається, мертвим, останнє оновлення 2008 р.)
Morph : Morph - це програма Java, яка полегшує внутрішню сумісність програми. Коли інформація протікає через додаток, вона зазнає багаторазових перетворень. Морф забезпечує стандартний спосіб здійснення цих перетворень. (здається мертвим, останнє оновлення 2008 р.)
Лоренц : Лоренц - це загальна рамка перетворення об'єкт-об'єкт. Він надає простий API для перетворення об’єктів Java одного типу в об’єкт іншого типу. (здається мертвим)
OTOM : За допомогою OTOM ви можете скопіювати будь-які дані з будь-якого об'єкта на будь-який інший об’єкт. Можливості безмежні. Ласкаво просимо на "Осінь". (здається мертвим)
Ще одна - Orika - https://github.com/orika-mapper/orika
Orika - це структура картографічного відображення Java Bean, яка рекурсивно копіює (серед інших можливостей) дані з одного об'єкта на інший. Це може бути дуже корисно при розробці багатошарових додатків.
Orika фокусується на максимальній автоматизації, забезпечуючи при цьому налаштування за допомогою конфігурації та розширення, де це необхідно.
Orika дозволяє розробнику:
- Намітьте складні та глибоко структуровані об’єкти
- "Зрівняти" або "Розгорнути" об'єкти, зіставивши вкладені властивості до властивостей верхнього рівня, і навпаки
- Створіть картографи на ходу та застосуйте налаштування, щоб керувати деяким чи всім відображенням
- Створіть перетворювачі для повного контролю над відображенням певного набору об'єктів у будь-якій точці графіка об'єкта - за типом або навіть за конкретною назвою властивості
- Обробляйте проксі-сервери або вдосконалені об'єкти (наприклад, у сплячому режимі чи різні макетні рамки)
- Застосовуйте двонаправлене відображення в одній конфігурації
- Відображайте екземпляри відповідного конкретного класу для цільового абстрактного класу чи інтерфейсу
- Обробляти зворотні відображення
- Обробляйте складні умови за межами специфікацій JavaBean.
Orika використовує генерацію байтових кодів для створення швидких картографів із мінімальними накладними витратами.
ModelMapper - ще одна бібліотека, яку варто перевірити. Дизайн ModelMapper відрізняється від інших бібліотек тим, що він:
Перегляньте сайт ModelMapper для отримання додаткової інформації:
Використовуйте beanutils Apache:
static void copyProperties(Object dest, Object orig)
-Копіюйте значення властивостей з початкового джерела в бій призначення для всіх випадків, коли назви властивостей однакові.
Є ще один двигун / рамка для картографування Java Nomin: http://nomin.sourceforge.net .
Я пропоную спробувати JMapper Framework .
Це Java-перетворювач Java на картографічний компонент Java, дозволяє динамічно виконувати проходження даних за допомогою анотацій та / або XML.
З JMapper ви можете:
Я радий додати Moo як варіант, хоча я чітко упереджений до цього: http://geoffreywiseman.github.com/Moo/
Це дуже просто у використанні для простих випадків, розумних для складних випадків, хоча все-таки є деякі сфери, де я можу уявити, що можна підвищити його для ще більш складних ситуацій.
Ви також можете спробувати структуру картографування на основі Dozer, але з декларацією відображення Excel. У них є деякі інструменти та додаткові цікаві функції. Перевірте на http://openl-tablets.sf.net/mapper
new ObjectMapper().convertValue(...)
. У Джексона також є підтримка анотацій та мікстун-анотацій, тому я вважаю це дуже хорошим варіантом.