Хм, па јас би рекол дека зависи колку "мапери" треба да искуцаш. Ако мапирањето ти е голем дел од проектот, тогаш да, можеби има некој бенефит.
Притоа, гледам дека и со користење на оваа библиотека исто треба да куцаш некаква конфигурација за мапирање.
Јас искрено не би користел вакво нешто од следниве причини:
- Си ја зголемуваш комплексноста на кодот. Секој што ќе работи на domain делот треба да го разбира и mapstruct и да искуца соодветни mappings. Треба да знае дека покрај одржувањето на DTO и ентитетите, ќе мора да ги одржува и mapping класите.
- Добиваш уште една библиотека која ќе треба да ја одржуваш. Upgrades, компатибилност со верзии, па компатибилност помеѓу dependencies кои ги има таа и dependencies на твои други библиотеки (може да зависат од исто dependency, па кревање на верзија некое од нив да ја break-не логиката)
- Гледам дека ова е class generator, така да ако проектот е доволно голем, може да ти влијае на compile/build времето.
А кои се бенефитите? Ќе скратиш нешто на boilerplate код (претпоставувам дека ако DTO-то и ентитетите се исти тогаш конвертирањето работи out of the box). Но, колку често ти се DTO и ентитетите исти? Пример доста нормално е да имаш нешто вакво:
Java:
class CourseDTO {
private Long id;
private String name;
private Long courseTypeId;
}
class Course {
private Long id;
private String name;
private CourseType courseType;
}
Ваквиот mapping (Long -> CourseType) ќе мораш да го направиш рачно. Тука можеш да се судриш и со некои лимитации на билиотеката, па ако сакаш да направиш некој специфичен override, да треба да правиш "хакови".
На крајот, DTO и ентитетите се класи што би требало ретко да се упдејтираат, па времето потрошено на нивно куцање е многу мал процент од целокупниот развој на софтвер.