/ / Le convalide Javax e Hibernate implicano NotNull? - java, annotazioni, validazione bean, validazione ibernazione

Le convalide Javax e Hibernate implicano NotNull? - java, annotazioni, validazione di bean, validatore di ibernazione

L'elenco delle convalide Javax supportate è Qui.

L'elenco delle convalide dell'ibernazione supportate (estensione Javax) sono Qui.

Ognuna di queste annotazioni "estende" o implica @NotNull?

Ad esempio, se annoto la seguente entità:

public class Widget {
@Email
private String email;

@URL
private String website;

// etc...
}

fa @Email e @URL anche far rispettare @NotNull? O sono semplicemente applicati / applicati Se tali proprietà sono definite per un particolare Widget esempio?

Quali annotazioni estendono / implicano @NotNulle quali no? Ci sono altre relazioni implicite con queste annotazioni?

risposte:

3 per risposta № 1

No. Se guardi il codice sorgente di EmailValidator da hibernate validator, ad esempio, contiene questo codice all'inizio di isValid() metodo:

if ( value == null || value.length() == 0 ) {
return true;
}

Lo stesso per URLValidator e così via. Generalmente tutti i validatori per le annotazioni corrispondenti considerano il valore valido quando si tenta di convalidare null valore, quindi una buona regola empirica sarebbe quella di eseguire sempre le convalide non nulle separatamente.

Modificare: ecco una citazione da Specifica JSR-303 relativo a questo problema:

Sebbene non obbligatorio, è considerato un benepratica per dividere il convalida del vincolo di base dalla convalida del vincolo non nullo (ad esempio, un vincolo @Email restituirà true su un oggetto null, cioè non si occuperà della convalida @NotNull)