Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Приходилось писать большое число тестов для мепперов (а написание теста по трудоемкости в 2 раза превышает написание самого меппера)
@Mapping и поля на корое она ссылается нет — то будет ошибка во время маппинга. Таким образом можно обойтись одним (хотя и сложным) тестом.И добавляют множество проблем, если понадобится (а это в 99% случаев так) добавить какую-то логику конвертации, навскидку country в country code
@Converter(ContryToCode.class), или конвертором типов.true/false в 1/0,
dictionary lookup.
Например, после пары лет эволюции в проекте дозер мэппер большой частью состоял из custom mappers
Это может быть критично, если доменная модель, как это любят в энтерпрайзе, генерится из xsd с помощью jaxb.
Если, скажем, IDEA не может понять куда эта библиотека копирует поле определенного обьекта, то ей решительно нельзя пользоваться как и всеми ей подобными.
Да можно же запилить интеграцию иде под конкретную либу. Расширить Find Usages.
Чисто мое имхо — использовать нечто, не умеющее интеграцию с иде (или иде, не умеющее интеграцию с этим) — не буду, пока интеграция не появится либо я не прикручу ее самостоятельно.
PS: «иде» — фи.IDE-фикс ;-)
элементарные вещи типа мапинга «наивным способом» реализуются откровенно плохо (тормозит, плохо рефакторится)
а не наивным способом ява обрастает метаязыком на аннотациях, теряя и свою сущность, и поддержку тулзов которые умеют автоматически анализировать жаву (жаву, а не твой метаязык, черт знает как вбитый в аннотации)
И то, что все «посторонние» решения типа сабжевого маппера выглядят как прикрученные сбоку костыли — нет способа модифицировать синтаксис базового языка, не потеряв интеграции с иде и другими автотулзами.
def some = a?.b?.c
java-object-merger — больше чем просто маппер объектов