Ответ 1
Я искал альтернативы.
Здесь - очень хорошее освещение различных вариантов.
Я пытаюсь найти простой способ сопоставить DTO с объектами без кода котельной. Хотя я думал о использовании бульдозера, похоже, требуется много xml-конфигурации. Кто-нибудь видел альтернативу бульдозера, которая использует DSL для настройки отображения bean в чистой Java?
В идеале я надеюсь найти карту bean, которая вдохновлена тем, как Guice делает что-то.
Я искал альтернативы.
Здесь - очень хорошее освещение различных вариантов.
Посмотрите Orika.
Orika - это структура отображения Java Bean, которая рекурсивно копирует (среди других возможностей) данные с одного объекта на другой. Это может быть очень полезно при разработке многоуровневых приложений.
С моей точки зрения, всегда требуется конфигурация или код Java для отображения некоторых специальных свойств.
Здесь я хочу взять DO
и DTO
, например
DO:{
id: "id",
name:"name",
doName1: "doName1",
nestedObj: {
id: "nestedObjId",
name: "nestedObjName"
}
}
DTO{
id: "",
name: "",
name1: "" // for mapping doName1 in DO.
nestedId: "", //for DT.nestObj.id
nestedName: "", //for DT.nestObj.name
}
Для Dozer или Orika оба они могут автоматически сопоставлять свойство id и name между DO и DTO без какой-либо конфигурации или java-кода, поскольку они имеют одинаковые имена и типы свойств.
Но если вы хотите DO.doName1
< ---- > DTO.name1
или DO.nestedObj.id
< --- > DTO.nestedId
, вам нужно сделать некоторую конфигурацию (через xml или java), чтобы сообщить инструменту сопоставления намерены это сделать.
Я думаю, что для вашего случая использования Dozer, Orika и ModelMapper все в порядке. Но для меня я переключил свой проект с бульдозера на Орику для достижения цели. Хотя Орика не настолько зрелая, как бульдозер, но не настолько интеллигентная и требует от меня дополнительной работы, чтобы поддерживать настроенные настройки отображения.
Если ваш проект не слишком заботится о производительности, я порекомендую вам бульдозер, его так просто использовать и поддерживать так много расширенных функций. В противном случае, если вы покупаете высокую производительность, я предлагаю вам orika.