Можно ли использовать Interace для преобразования между DTO и Entity?
public interface UserDto {
public long getId();
public String getName();
public String getEmail();
public String getPassword();
}
public interface UserEntity extends UserDto {
public long getUuId();
}
1 ответ
В большинстве случаев я бы сказал нет, потому что свойства у них разные и должны быть независимыми друг от друга, поэтому пользовательская реализация с интерфейсом не является окончательным решением.
Вместо этого я бы рекомендовал использовать библиотеку mapstruct
, которая также работает с интерфейсами под капотом. Вы определяете интерфейс, и он сгенерирует для вас шаблонный код, в результате чего код будет более удобным для сопровождения:
@Mapper
public interface UserMapper{
@Mappings(
@Mapping(target = "id", source = "id"),
@Mapping(target = "name", source = "name"),
@Mapping(target = "email", source = "email"),
@Mapping(target = "password", source = "password")
})
UserEntity mapDtoToEntity(UserDto usertDto);
}
Если ваши сопоставления достаточно просты, используйте ModelMapper
или Spring BeanUtils.copyProperties
. Если вы действительно хотите отобразить их самостоятельно, я бы посоветовал не смешивать их с интерфейсом и держать их независимыми друг от друга.
Похожие вопросы
Новые вопросы
java
Java — это высокоуровневый объектно-ориентированный язык программирования. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег часто используется вместе с другими тегами для библиотек и/или фреймворков, используемых разработчиками Java.