Разница между @Size, @Length и @Column (длина = значение)
В чем разница между проверкой проверки следующих трех полей?
@Entity
public class MyEntity {
@Column(name = "MY_FIELD_1", length=13)
private String myField1;
@Column(name = "MY_FIELD_2")
@Size(min = 13, max = 13)
private String myField2;
@Column(name = "MY_FIELD_3")
@Length(min = 13, max = 13)
private String myField3;
// getter & setter
}
Я читал, что первый из них связан с материалом DDL.
Второй - для bean -уверительности.
Третий - для проверки спящего режима.
Это правильно? Я все еще не понимаю: когда я должен использовать какой? Когда запускается одна из этих аннотаций?
Изменить: подумайте о следующей ситуации:
Учитывая требование разработать сущность с полем типа string с длиной 13. Какой из вышеупомянутых методов вы бы выбрали? Или еще лучше: какие вопросы вы должны задать себе, чтобы узнать, какой из них подходит вашим целям?
Ответы
Ответ 1
-
@Column
- это аннотация JPA, а атрибут length
используется инструментом создания схемы для установки связанной длины столбца SQL.
-
@Size
является аннотацией проверки Bean, которая проверяет, что связанная строка имеет значение, длина которого ограничена минимальным и максимальным значения.
-
@Length
является аннотацией Hibernate и имеет то же значение, что и @Size
Итак, как 2., так и 3. должны проверять длину строки, используя Bean Validation. Я бы выбрал 2. потому что он общий.