Forskjellen mellom @Size, @Length og @Column (lengde = verdi)
1. Oversikt
I denne raske veiledningen tar vi en titt på JSR-330 @Størrelse, Dvalemodus @Lengde og JPA @Kolonne‘S lengde Egenskap.
Ved første rødme, disse kan virke like, men de utfører forskjellige funksjoner. La oss se hvordan.
2. Opprinnelse
Enkelt sagt, alle disse kommentarene er ment å kommunisere størrelsen på et felt.
@Størrelse og @Lengde er like. Vi kan bruke enten for å validere størrelsen på et felt. Den første er en Java-standardkommentar, og den andre er spesifikk for dvalemodus.
@Kolonneer imidlertid en JPA-kommentar som vi bruker for å kontrollere DDL-utsagn.
La oss nå gå gjennom hver av dem i detalj.
3. @Størrelse
For valideringer bruker vi @Størrelse, en kommentar om validering av bønner. La oss bruke eiendommen mellomnavn kommentert med @Størrelse for å validere verdien mellom attributtene min og maks:
public class User {// ... @Size (min = 3, max = 15) private String middleName; // ...}
Viktigst, @Størrelse gjør bønnen uavhengig av JPA og dens leverandører som Hibernate. Som et resultat er dette mer bærbart enn @Lengde.
4. @Lengde
Og som vi nettopp sa, @Lengde er den dvalemodus-spesifikke versjonen av @Størrelse. La oss håndheve sortimentet for etternavn ved hjelp av @Lengde:
@Entity public class User {// ... @Length (min = 3, max = 15) private String etternavn; // ...}
5. @Kolonne (lengde = verdi)
@Kolonneer imidlertid ganske annerledes.
Vi bruker @Kolonne til angi spesifikke egenskaper ved den fysiske databasekolonnen. La oss bruke lengde attributt til @Kolonne kommentar for å spesifisere strengverdiene kolonnelengde:
@Entity public class User {@Column (length = 3) private String fornavn; // ...}
Følgelig vil den resulterende kolonnen bli generert som en VARCHAR (3) og prøver å sette inn en lengre streng vil resultere i en SQL-feil.
Merk at vi bruker @Kolonne bare for å spesifisere tabellkolonneegenskaper da det ikke gir valideringer.
Selvfølgelig, Vi kan bruke @Kolonne sammen med @Størrelse for å spesifisere databasekolonneegenskap med bønnevalidering.
@Entity public class User {// ... @Column (length = 5) @Size (min = 3, max = 5) private String city; // ...}
6. Konklusjon
I denne oppskriften lærte vi om forskjellene mellom @Størrelse kommentar, @Lengde kommentar og @Kolonne‘S lengde Egenskap. Vi undersøkte hver for seg innenfor områdene de ble brukt.
Som alltid er hele kildekoden til eksemplene tilgjengelig på GitHub.