Разница между @Size, @Length и @Column (длина = значение) при использовании JPA и Hibernate

В чем разница между проверкой правильности следующих трех полей?

@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. Второй - для проверки бина. Третий - для проверки гибернации.

Это верно? То, что я до сих пор не понимаю, это: когда мне нужно использовать какой? Когда срабатывает одна из этих аннотаций?

Изменить: Подумайте о следующей ситуации: Учитывая требование для разработки сущности с полем типа строки длиной 13. Какой из вышеупомянутых методов вы бы выбрали? Или даже лучше: какие вопросы вы должны задать себе, чтобы узнать, какой из них соответствует вашим целям?

Ответы на вопрос(1)

Ваш ответ на вопрос