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.


$config[zx-auto] not found$config[zx-overlay] not found