A JPA-entitások meghatározása

1. Bemutatkozás

Ebben az oktatóanyagban megismerhetjük az entitások alapjait, valamint a JPA-ban egy entitást meghatározó és testreszabó különféle jegyzeteket.

2. Entitás

A JPA entitásai nem más, mint POJO-k, amelyek olyan adatokat tárolnak, amelyek fennmaradhatnak az adatbázisban. Az entitás egy adatbázisban tárolt táblázatot képvisel. Az entitás minden példánya egy sort jelent a táblázatban.

2.1. A Entitás Megjegyzés

Tegyük fel, hogy van POJO-junk Diák amely egy tanuló adatait reprezentálja, és szeretnénk az adatbázisban tárolni.

public class Student {// mezők, getterek és beállítók}

Ennek érdekében meg kell határoznunk egy entitást, hogy a JPA tudatában legyen annak.

Tehát definiáljuk a @Entity annotáció. Osztályszinten meg kell adnunk ezt az annotációt. Biztosítanunk kell azt is, hogy az entitás rendelkezzen argum nélküli konstruktorral és elsődleges kulccsal:

@Entity public class Student {// mezők, mérőeszközök és beállítók}

Az entitás neve alapértelmezés szerint az osztály neve. A nevét megváltoztathatjuk a név elem.

@Entity (név = "hallgató") nyilvános osztály Diák {// mezők, fogaskerekek és beállítók}

Mivel a különböző JPA megvalósítások megpróbálják alosztályba osztani az entitásunkat annak érdekében, hogy működőképességüket biztosítsák, az entitásosztályokat nem szabad deklarálni végső.

2.2. A Id Megjegyzés

Minden JPA entitásnak rendelkeznie kell egy elsődleges kulccsal, amely egyedileg azonosítja azokat. A @Id az annotáció határozza meg az elsődleges kulcsot. Az azonosítókat különböző módon generálhatjuk, amelyeket a @GeneratedValue annotáció.

Négy id generációs stratégia közül választhatunk a stratégia elem. Az érték lehet AUTO, TÁBLÁZAT, SZekvencia, vagy IDENTITÁS.

@Entity public class Student {@Id @GeneratedValue (strategy = GenerationType.AUTO) private Long id; privát karakterlánc neve; // szerelők és beállítók}

Ha megadjuk GenerationType.AUTO, a JPA szolgáltató minden olyan stratégiát felhasznál, amelyet az azonosítók előállításához akar.

Ha feljegyezzük az entitás mezőit, a JPA szolgáltató ezeket a mezőket használja az entitás állapotának megszerzéséhez és beállításához. A Field Access mellett elvégezhetünk tulajdonjogot vagy vegyes hozzáférést is, amely lehetővé teszi számunkra, hogy ugyanabban az entitásban használjuk a mező és a tulajdon hozzáférést is.

2.3. A asztal Megjegyzés

A legtöbb esetben, az adatbázisban lévő táblázat neve és az entitás neve nem lesz ugyanaz.

Ezekben az esetekben megadhatjuk a tábla nevét a @Asztal kommentár:

@Entity @Table (name = "STUDENT") nyilvános osztály Diák {// mezők, fogaskerekek és beállítók}

Megemlíthetjük a sémát a séma elem:

@Entity @Table (name = "STUDENT", schema = "ISKOLA") public class Student {// mezők, getterek és beállítók}

A séma neve segít megkülönböztetni az egyik táblázatkészletet a másiktól,

Ha nem használjuk a @Asztal megjegyzéssel, az entitás nevét a táblázat nevének tekintjük.

2.4. A Oszlop Megjegyzés

Akárcsak a @Asztal annotációval használhatjuk a @Oszlop kommentár a táblázat oszlopainak részleteinek megemlítésére.

A @Oszlop az annotációnak számos eleme van, például név, hossz, érvényteleníthető és egyedi.

@Entity @Table (name = "STUDENT") public class Student {@Id @GeneratedValue (strategy = GenerationType.AUTO) private Long id; @ Oszlop (név = "STUDENT_NAME", hossz = 50, nullable = hamis, egyedi = hamis) privát karakterlánc neve; // egyéb mezők, getterek és beállítók}

A név elem adja meg a táblázat oszlopának nevét. A hossz elem határozza meg a hosszát. A semmissé tehető elem határozza meg, hogy az oszlop érvénytelen-e vagy sem, és a egyedi elem határozza meg, hogy az oszlop egyedi-e.

Ha nem adjuk meg ezt a kommentárt, akkor a mező nevét a táblázat oszlopának nevezzük.

2.5. A Átmeneti Megjegyzés

Előfordulhat, hogy szeretnénk tegyen egy mezőt tarthatatlanná. Használhatjuk a @ Átmeneti megjegyzés ahhoz. Megadja, hogy a mező nem marad meg.

Például kiszámíthatjuk a diák életkorát a születés dátumától.

Tehát jegyezzük fel a mezőt kor a ... val @ Átmeneti kommentár:

@Entity @Table (name = "STUDENT") public class Student {@Id @GeneratedValue (strategy = GenerationType.AUTO) private Long id; @ Oszlop (név = "STUDENT_NAME", hossz = 50, nullable = hamis) privát karakterlánc neve; @ Átmeneti privát egész kor; // egyéb mezők, getterek és beállítók}

Ennek eredményeként a mező kor nem fog kitartani az asztal mellett.

2.6. A Időbeli Megjegyzés

Bizonyos esetekben időbeli értékeket kell mentenünk a táblázatunkba.

Ehhez megvan a @Időbeli kommentár:

@Entity @Table (name = "STUDENT") public class Student {@Id @GeneratedValue (strategy = GenerationType.AUTO) private Long id; @ Oszlop (név = "STUDENT_NAME", hossz = 50, nullable = hamis, egyedi = hamis) privát karakterlánc neve; @ Átmeneti privát egész kor; @Temporal (TemporalType.DATE) privát születési dátum; // egyéb mezők, getterek és beállítók}

A JPA 2.2-vel azonban nekünk is van támogatásunk java.time.LocalDate, java.time.LocalTime, java.time.LocalDateTime, java.time.OffsetTime és java.time.OffsetDateTime.

2.7. A Felsorolt Megjegyzés

Előfordulhat, hogy fenn akarunk tartani egy Java-t enum típus.

Használhatjuk a @ Számlálva kommentár annak meghatározásához, hogy a enum név vagy sorszám szerint kell megtartani (alapértelmezett).

public enum Nem {MALE, FEMALE} 
@Entity @Table (name = "STUDENT") public class Student {@Id @GeneratedValue (strategy = GenerationType.AUTO) private Long id; @ Oszlop (név = "STUDENT_NAME", hossz = 50, nullable = hamis, egyedi = hamis) privát karakterlánc neve; @ Átmeneti privát egész kor; @Temporal (TemporalType.DATE) privát születési dátum; @ Számolt (EnumType.STRING) privát Nem; // egyéb mezők, getterek és beállítók}

Tulajdonképpen, nem kell megadnunk a @ Számlálva egyáltalán, ha fenn akarjuk tartani a Nem valami által enum’S sorszám.

Ahhoz azonban, hogy kitartson a Nem által enum névvel konfiguráltuk a jegyzetet a EnumType.STRING.

3. Következtetés

Ebben a cikkben megtudtuk, hogy mik a JPA entitások és hogyan hozhatók létre. Ismerkedtünk a különféle annotációkkal, amelyek felhasználhatók az entitás további testreszabására.

A cikk teljes kódja a Github oldalon található.