Differenz zwischen @Size, @Length und @Column (length = value) bei Verwendung von JPA und Hibernate

Was ist der Unterschied zwischen der Validierungsprüfung der folgenden drei Felder?

@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

}

Ich habe gelesen, dass der erste mit DDL-Sachen zu tun hat. Die zweite dient der Bean-Validierung. Die dritte Option ist für die Überprüfung des Ruhezustands vorgesehen.

Ist das korrekt? Was ich immer noch nicht verstehe ist: Wann muss ich welches verwenden? Wann wird eine dieser Anmerkungen ausgelöst?

Edit: Stellen Sie sich folgende Situation vor: Unter der Voraussetzung, dass eine Entität mit einem Feld vom Typ string mit der Länge 13 entwickelt werden muss. Welche der oben genannten Methoden würden Sie wählen? Oder noch besser: Welche Fragen müssen Sie sich stellen, um herauszufinden, welche für Ihre Zwecke geeignet sind?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage