Я делаю вот так и мне очень стыдно:
На бэкенде:
class UserDto {
...
// если повезёт, тут ещё будет @MaxLength(100)
// а может ещё доступные символы ограничим
String firstName;
...
}
@Entity
class UserEntity {
...
// тут скорее всего ничего не будет
@Column(...)
String firstName;
...
}
На фронтэнде:
// если повезёт, ещё будет проверка длины
// а может ещё доступные символы
firstName: new FormField('', Validators.required)
В базе:
firstName varchar(100) not null
В документации:
firstName - от 1 до 100 символов
Самый настоящий копипаст со всеми вытекающими. Если надо что-то поменять, менять приходится в куче месте. Легко что-то пропустить, в итоге оно разъезжается и вылазят баги. Как вы боретесь с проблемой?