Разница между @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. потому что он общий.