Unterschied zwischen @Size, @Länge und @Column(length=Wert) bei der Verwendung von JPA und Hibernate

Was ist der Unterschied zwischen der überprü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

}

Habe ich gelesen, dass der erste hat zu tun mit DDL-Zeug.
Die zweite ist für bean-validation.
Die Dritte ist für hibernate-Validierung.

Ist das richtig? Was ich noch nicht verstehe, ist: Wann muss ich welche? Wenn diese Anmerkungen auslösen?

Edit: Denken Sie an folgende situation:
Angesichts der Anforderung zu entwickeln, ein Unternehmen mit einem Feld vom Typ string mit der Länge 13. Welche der oben genannten Methoden würden Sie wählen? Oder noch besser: Welche Fragen haben Sie zu Fragen, um herauszufinden, welche passt Ihre Zwecke?

  • Spalte ist nichts zu tun mit der VALIDIERUNG. Größe der JPA-standard. Länge ist urheberrechtlich geschützt. Die Antwort sollte klar sein, aus, dass ... @Größe
  • Länge proprietär ist? Also ich bin nicht berechtigt diese zu verwenden, im Allgemeinen?
  • Als Antwort sagt, es ist eine Hibernate-spezifische Erweiterung des Herstellers. Macht keinen Sinn, es zu benutzen (abgesehen von Menschen, die binden sich an eine JPA-Implementierung ohne Grund)
InformationsquelleAutor Chris311 | 2016-01-04
Schreibe einen Kommentar