Quelle est la différence entre le contrôle de validation des trois champs suivants?
@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
}
J'ai lu que le premier concerne les fichiers DDL. La seconde est pour la validation des haricots. Le troisième est pour la validation en veille prolongée.
Est-ce exact? Ce que je ne comprends toujours pas, c'est: quand dois-je utiliser lequel? Quand l'une de ces annotations se déclenche-t-elle?
Edit: Pensez à la situation suivante: Étant donné la nécessité de développer une entité avec un champ de type chaîne de longueur 13. Laquelle des méthodes susmentionnées choisiriez-vous? Ou mieux encore: quelles questions devez-vous vous poser pour savoir laquelle convient à vos objectifs?
@Column
est une annotation JPA et l'attribut length
est utilisé par l'outil de génération de schéma pour définir la longueur de colonne SQL associée.@Size
est une annotation de validation de bean qui valide que la chaîne associée a une valeur dont la longueur est limitée par les valeurs minimale et maximale.@Length
est une annotation spécifique à Hibernate et a la même signification que @Size
Donc les deux 2.
et 3.
devrait valider la longueur de String
à l'aide de la validation de bean. Je choisirais 2.
parce que c'est générique.