BO ‹=› Сопоставитель DTO на Java

В настоящее время я в своем приложении сопоставляю DTO с BO (и наоборот) вручную. Однако такой подход неуклюж и неуклюж.

Есть ли хороший сопоставитель между этими двумя представлениями?

Мои требования следующие:

  • Должен поддерживать преобразование прокси-серверов JPA в идентификаторы (DTO не должен напрямую ссылаться на другой DTO). Или эта функциональность должна быть легко реализована
  • Должна быть основана на аннотации, соглашение важнее конфигурации
  • Мягкие критерии: должны позволять сопоставлять несколько DTO с одним объектом (и наоборот).

Спасибо за любые предложения.


person malejpavouk    schedule 25.01.2013    source источник
comment
Вы пробовали это? jdto.org   -  person miguelcobain    schedule 25.01.2013


Ответы (3)


Что касается сопоставления объектов, я бы рекомендовал

Кроме того, обратитесь к этому ответу SO. Он имеет более или менее полный список картографов объектов Java: https://stackoverflow.com/a/1432956/1137735

Те 3, которые я предложил, показались мне более привлекательными. Я думаю, что все они соответствуют требованиям, которые вы спрашиваете.

person miguelcobain    schedule 25.01.2013
comment
Спасибо за ссылки. Я проверю эти реализации. - person malejpavouk; 25.01.2013
comment
На всякий случай, если это кому-то нужно. Mapper Spring 3, кажется, только предварительный просмотр. Документация jdto оказалась недостаточно убедительной, чтобы попробовать ее (показалось, что фреймворк не очень гибкий). Потом попробовал Дозер и Орика. Оба работали нормально, Dozer также имеет XML-конфикс, что является большим преимуществом, но значительно медленнее. Поэтому я выбрал Орику. - person malejpavouk; 28.03.2013

Ну, я знаю, что эта ветка немного устарела, и я уверен, что ответ @miguelcobain отличный.

Лично я бы рекомендовал использовать Orika для системы выполнения. Он надежный и использует генерацию байтового кода во время выполнения, поэтому сопоставление обрабатывается сгенерированным кодом, а не всегда с использованием API Reflection. Другие перечисленные библиотеки всегда используют сложную конфигурацию, а не соглашения.

Второе и лучшее решение, я думаю, это использовать Selma. Эта короткая библиотека делает всю работу за вас, но вместо того, чтобы обрабатывать сопоставление во время выполнения, она генерирует код сопоставления во время компиляции с помощью процессора аннотаций. Таким образом, компилятор будет вызывать ошибки отображения, это доказательство рефакторинга, и вы сможете увидеть сгенерированный код.

Надеюсь, вы попробуете.

person slemesle    schedule 21.05.2014

Я предлагаю вам попробовать JMapper Framework.
bean mapper, позволяет выполнять передачу данных динамически с помощью аннотаций и/или XML. С помощью JMapper вы можете:
создавать и дополнять целевые объекты
применять определенную логику к отображению
автоматически управлять файлом XML
реализовывать отношения 1 к N и N к 1
выполнять явные преобразования
применять унаследованные конфигурации

person Alessandro    schedule 15.05.2013