Здравствуйте, elmal, Вы писали:
E>1) Генерация автоматического копирования полей базового класса в производный. Иногда такое приходится делать. В результате кода писать не нужно вообще, и гарантированно не ошибешься и при развитии не забудешь добавить какое то поле, если оно поменялось у базового класса;
Честно-говоря не очень понял. Когда и зачем такое нужно?
E>2) Есть множество поставщиков данных. Данные из разных форматов гонятся в унифицированное внутреннее представление, а из внутреннего представления преобразуются в различные форматы множества потребителей этих данных. Поставщики данных и потребители — это совершенно независимые от нас приложения. Но названия кучи полей совпадает, в результате нужно ручками писать копирование только различающихся полей. При этом маппер автоматом сделает преобразование из одного типа данных в другой, например из XMLGregorianCalendar в Date; E>Пункт 2 нужен довольно часто. Поставщики данных отдают одни данные, они зачастую избыточны. А клиенту нужно весьма ограниченное подмножство исходных данных, причем в фомату, удобному именно клиенту. Да и пункт 1 тоже периодически бывает нужен.
С этим полностью согласен. Но, могу на вскидку вспомнить 3 примера, где мне нужно было гонять данные между двумя моделями. И ни в одном из этих случаем маппинг не помог бы — слишком велика разница между моделями.
Например на одно простое свойство в моей модели, нужно создать 2-3 бина и заполнить 2-3 свойства классами сгенерироваными JAXB/JAXWS. При том что модель одной и той же domain.
В другом случае, как я уже писал выше, мне нужно использовать Legacy DB наровне с актуальной. И в конвертации между двумя моделями есть куча кода преборазования типов и значений. Никаким маппером это не решается.