Здравствуйте, у меня есть вопрос относительно правильного способа моделирования неизменяемых сущностей:
Рассмотрим эту сущность (отредактировано по предложению Йенса Шаудера):
@Getter
@RequiredArgsConstructor(staticName = "of", access = AccessLevel.PACKAGE)
public final class Student {
private final @Id @Wither
long studentId;
@NotNull
@Size(min = 4, max = 20)
private final String userId;
@NotNull
@Min(0)
private final int matriculationNumber;
@NotNull
@Email
private final String eMail;
}
Итак, эта сущностьдолжен быть неизменным и предлагает статический of
метод создания.Также RequiredArgsConstructor
создает закрытый конструктор , хотя он должен создавать пакет, видимый для всех полей, не имеющих значения NULL, для каждого определения.Короче говоря, я сделал, так сказать, AllArgsConstructor
.
Этот документ здесь подробно описан https://docs.spring.io/spring-data/jdbc/docs/current/reference/html/#mapping.fundamentals. В разделе «Внутренние элементы создания объекта» изложены 4 аспекта для улучшенной обработки - «конструктор, который будетИспользуемые Spring Data не должны быть приватными"среди других, которые выполняются на мой взгляд.
Итак, мой вопрос: правильно ли выполнена эта изображенная сущность обоими способами в отношении оптимального картирования внутренних данных и данных пружины jdbc?
РЕДАКТИРОВАТЬ:
Тампохоже, это ошибка с плагином lombok в intellij, мешающая access = AccessLevel.PACKAGE
делать правильные вещи.Смотрите здесь: https://github.com/mplushnikov/lombok-intellij-plugin/issues/584
Хотя проблема уже закрыта, новая версия плагина недоступна ...