С моей точки зрения, конфигурация или код 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
}
Для бульдозер или Orika они оба могут автоматически сопоставляет идентификатор и имя свойства между DO и DTO без какой-либо конфигурации или кода Java, потому что они с те же имена и типы свойств. Но если вы хотите DO.doName1
< ---->DTO.name1
или DO.nestedObj.id
< --->DTO.nestedId
вам нужно сделать некоторую конфигурацию (через xml или java), чтобы сообщить инструменту сопоставления, который вы намереваетесь сделать. Я думаю, что для вашего случая использования, Dozer, Orika и ModelMapper все в порядке. Но для меня я переключил свой проект с бульдозера на Орику для достижения цели. Хотя Орика не настолько зрелая, как бульдозер, но не настолько интеллигентная и требует от меня дополнительной работы, чтобы поддерживать настроенные настройки отображения. Если ваш проект не слишком заботится о производительности, я порекомендую вам бульдозер, он настолько прост в использовании и поддерживает множество расширенных функций. В противном случае, если вы покупаете высокую производительность, я предлагаю вам orika.
Другим вариантом будет http://jtransfo.org/. Это позволяет определять отображения с помощью аннотаций на TO. В нем есть дополнительная функция, позволяющая иметь безопасные/необязательные преобразования на основе тегов. –
взгляните на https://github.com/amgohan/zebra/: (отображение объектов объектов DIY и использование зебры для унифицированного способа ввода указателей.) Zebra поставляется с простым и унифицированным способом: создавать ваши карты; управлять одним способом и обратным отображением в одном классе; зарегистрируйте свои карты и повторно используйте их в любом месте приложения; управлять глубоким картированием. – amgohan
Это довольно хорошая альтернатива: http://modelmapper.org/ – cosbor11