JPA @Basic Annotation

1. Overzicht

In deze korte tutorial verkennen we de PPV @Basic annotatie. We bespreken ook het verschil tussen @Basic en @Kolom JPA-annotaties.

2. Basistypen

JPA ondersteunt verschillende Java-gegevenstypen als persistente velden van een entiteit, vaak bekend als de basistypen.

Een basistype verwijst rechtstreeks naar een kolom in de database. Deze omvatten Java-primitieven en hun wrapper-klassen, Draad, java.math.BigInteger en java.math.BigDecimal, verschillende beschikbare datum-tijdklassen, enums en elk ander type dat wordt geïmplementeerd java.io.Serializable.

Hibernate houdt, net als elke andere ORM-leverancier, een register bij van basistypen en gebruikt dit om de specifieke org.hibernate.type.Type.

3. @Basic Annotatie

We kunnen de @Basic annotatie om een ​​basistype-eigenschap te markeren:

@Entity openbare klas Cursus {@Basic @Id privé int id; @Basic private String naam; ...}

Met andere woorden, de @Basic annotatie op een veld of een eigenschap geeft aan dat het een basistype is en dat Hibernate de standaardtoewijzing moet gebruiken voor zijn persistentie.

Merk op dat het een optionele annotatie is. En dus kunnen we onze Cursus entiteit als:

@Entity openbare klas Cursus {@Id privé int id; private String naam; ...}

Als we het @Basic annotatie voor een basistype-attribuut, wordt er impliciet van uitgegaan, en de standaardwaarden van deze annotatie zijn van toepassing.

4. Waarom gebruiken @Basic Annotatie?

De @Basic annotatie heeft twee attributen, optioneel en halen. Laten we ze allemaal eens nader bekijken.

De optioneel attribuut is een boolean parameter die bepaalt of het gemarkeerde veld of de eigenschap dit toelaat nul. Het is standaard ingesteld op waar. Dus als het veld geen primitief type is, wordt aangenomen dat de onderliggende kolom dat wel is ongeldig standaard.

De halen attribuut accepteert een lid van de opsomming Ophalen, welke specificeert of het gemarkeerde veld of de gemarkeerde eigenschap lui moet worden geladen of gretig moet worden opgehaald. Het is standaard ingesteld op FetchType.EAGER, maar we kunnen lazy loading toestaan ​​door deze in te stellen op FetchType.LAZY.

Lui laden heeft alleen zin als we een grote hebben Serialiseerbaar object toegewezen als een basistype, omdat in dat geval de kosten voor veldtoegang aanzienlijk kunnen zijn.

We hebben een gedetailleerde tutorial over Eager / Lazy loading in Hibernate die dieper ingaat op het onderwerp.

Laten we nu zeggen dat ik het niet wil toestaan nulls voor onze Cursus‘S naam en die eigenschap ook lui willen laden. Vervolgens zullen we onze definiëren Cursus entiteit als:

@Entity openbare klas Cursus {@Id privé int id; @Basic (optioneel = false, fetch = FetchType.LAZY) private String naam; ...}

We moeten expliciet de @Basic annotatie wanneer u bereid bent af te wijken van de standaardwaarden van optioneel en halenparameters. We kunnen een van deze of beide attributen specificeren, afhankelijk van onze behoeften.

5. PPV @Basic vs @Kolom

Laten we eens kijken naar de verschillen tussen @Basic en @Kolom annotaties:

  • Attributen van de @Basic annotatie worden toegepast op PPV-entiteiten, terwijl de attributen van @Kolom worden toegepast op de databasekolommen
  • @Basic annotaties optioneel attribuut definieert of het entiteitsveld nul of niet; aan de andere kant, @Kolom annotaties ongeldig attribuut specificeert of de corresponderende databasekolom kan zijn nul
  • We kunnen gebruiken @Basic om aan te geven dat een veld lui moet worden geladen
  • De @Kolom annotatie stelt ons in staat om de naam van de toegewezen databasekolom

6. Conclusie

In dit artikel hebben we geleerd wanneer en hoe we JPA's kunnen gebruiken @Basic annotatie. We hebben ook gesproken over hoe het verschilt van de @Kolom annotatie.

Zoals gewoonlijk zijn codevoorbeelden beschikbaar op Github.