Útmutató az Ebean ORM-hez

1. Bemutatkozás

Az Ebean egy Java-ban írt objektum-relációs leképező eszköz.

Támogatja a deklaráló entitások szokásos JPA-jegyzeteit. Ez azonban sokkal egyszerűbb API-t biztosít a fennmaradáshoz. Valójában az Ebean architektúrával kapcsolatban megemlítendő pontok egyike az, hogy munkamenet nélküli, vagyis nem kezeli teljes mértékben az entitásokat.

Emellett egy lekérdezési API-t is tartalmaz, és támogatja a lekérdezések natív SQL-ben történő írását. Az Ebean támogatja az összes jelentős adatbázis-szolgáltatót, mint például az Oracle, a Postgres, a MySql, a H2 stb.

Ebben az oktatóanyagban megvizsgáljuk, hogyan tudunk entitásokat létrehozni, fenntartani és lekérdezni az Ebean és a H2 használatával.

2. Beállítás

A kezdéshez vegyük le a függőségeinket és néhány alapvető konfigurációt.

2.1. Maven-függőségek

Mielőtt elkezdenénk, importáljuk a szükséges függőségeket:

 io.ebean ebean 11.22.4 com.h2database h2 1.4.196 ch.qos.logback logback-classic 1.2.3 

Az Ebean, a H2 és a Logback legújabb verziói megtalálhatók a Maven Central oldalon.

2.2. Fejlesztések

Az Ebean-nak módosítania kell az entitásbabokat, hogy azokat a szerver kezelhesse. Így hozzáadunk egy Maven plugint a feladat elvégzéséhez:

 io.ebean ebean-maven-plugin 11.11.2 fő process-osztályok debug = 1 fokozás 

Ezenkívül meg kell adnunk a Maven beépülő modulnak a tranzakciókat használó entitásokat és osztályokat tartalmazó csomagok nevét is. Ehhez létrehozzuk a fájlt ebean.mf:

entitás-csomagok: com.baeldung.ebean.model tranzakciós-csomagok: com.baeldung.ebean.app

2.3. Fakitermelés

Alkossunk is logback.xml és néhány csomag naplózási szintjét állítsa a következőre: NYOM hogy láthassuk a végrehajtott utasításokat:

3. Kiszolgáló konfigurálása

Létre kell hoznunk egy EbeanServer példány entitások mentésére vagy lekérdezések futtatására egy adatbázisban. Kétféle módon hozhatunk létre szerverpéldányt - alapértelmezett tulajdonságfájl használatával vagy programozottan.

3.1. Alapértelmezett tulajdonságfájl használata

Az alapértelmezett tulajdonságfájl típusa lehet tulajdonságait vagy yaml. Az Ebean a nevekkel ellátott fájlokban keresi a konfigurációt alkalmazás.tulajdonságok, ebean.tulajdonságok vagy alkalmazás.yml.

Az adatbázis-kapcsolat részleteinek megadása mellett utasíthatjuk az Ebean-t DDL utasítások létrehozására és futtatására is.

Most nézzünk meg egy konfigurációs mintát:

ebean.db.ddl.generate = true ebean.db.ddl.run = true datasource.db.username = sa datasource.db.password = datasource.db.databaseUrl = jdbc: h2: mem: customer datasource.db.databaseDriver = org.h2.Vezetõ

3.2. A ServerConfig használatával

Ezután nézzük meg, hogyan lehet ugyanazt a kiszolgálót programozottan létrehozni EbeanServerFactory és ServerConfig:

ServerConfig cfg = new ServerConfig (); Tulajdonságok tulajdonságai = új Tulajdonságok (); tulajdonságok.put ("ebean.db.ddl.generate", "true"); tulajdonságok.put ("ebean.db.ddl.run", "true"); properties.put ("datasource.db.username", "sa"); properties.put ("datasource.db.password", ""); properties.put ("datasource.db.databaseUrl", "jdbc: h2: mem: app2"; properties.put ("datasource.db.databaseDriver", "org.h2.Driver"); cfg.loadFromProperties (tulajdonságok); EbeanServer szerver = EbeanServerFactory.create (cfg);

3.3. Alapértelmezett kiszolgálópéldány

Egyetlen EbeanServer a példány egyetlen adatbázisba térképez. Igényeinktől függően többet is létrehozhatunk EbeanServer például.

Ha csak egyetlen kiszolgálópéldány jön létre, alapértelmezés szerint ez lesz regisztrálva alapértelmezett kiszolgálópéldányként. Az alkalmazás bárhol elérhető, statikus módszerrel a Ebean osztály:

EbeanServer szerver = Ebean.getDefaultServer ();

Ha több adatbázis van, akkor az egyik kiszolgálópéldányt alapértelmezettként regisztrálhatja:

cfg.setDefaultServer (true);

4. Entitások létrehozása

Az Ebean teljes mértékben támogatja a JPA kommentárjait, valamint a saját annotációit használó további funkciókat.

Hozzunk létre néhány entitást mind a JPA, mind az Ebean annotációk segítségével. Először létrehozunk egy BaseModel amely az entitások között közös tulajdonságokat tartalmaz:

@MappedSuperclass nyilvános absztrakt osztály BaseModel {@Id védett hosszú id; @Version védett hosszú verzió; @WhenCreated védett azonnali createdOn; @WhenModified protected Instant modifikált On; // szerelők és beállítók}

Itt használtuk a MappedSuperClass JPA kommentár a BaseModel. És két Ebean annotáció io.bean.annotation.WhenCreated és io.ebean.annotation.WhenModified ellenőrzési célokra.

Ezután két entitást hozunk létre Vevő és Cím amelyek kiterjednek BaseModel:

@Entity public class Ügyfél kiterjeszti a BaseModel {public Ügyfél (String neve, Cím címe) {super (); ez.név = név; this.cím = cím; } privát karakterlánc neve; @OneToOne (kaszkád = CascadeType.ALL) Cím címe; // szerelők és beállítók} 
@Entity public class Address kiterjeszti a BaseModel {public Address (String addressLine1, String addressLine2, String city) {super (); this.címLine1 = addressLine1; this.címLine2 = addressLine2; ez.város = város; } privát String addressLine1; privát String addressLine2; privát String város; // szerelők és beállítók}

Ban ben Vevő, definiáltunk egy-egy leképezést Cím és hozzáadta a set cascade type értéket MINDEN így a gyermek entitások is frissülnek a szülő entitásokkal együtt.

5. Alapvető CRUD műveletek

Korábban láttuk, hogyan kell konfigurálni a EbeanServer és két entitást hozott létre. Most, végezzünk néhány alapvető CRUD műveletet rajtuk.

Az alapértelmezett kiszolgálói példányt fogjuk használni az adatok megőrzéséhez és eléréséhez. A Ebean osztály statikus módszereket is biztosít az adatok megőrzéséhez és eléréséhez, amelyek a kérést az alapértelmezett kiszolgálópéldányhoz proxyba viszik:

A1 cím = új cím ("5, Wide Street", null, "New York"); C1 = új ügyfél ("John Wide", a1); EbeanServer szerver = Ebean.getDefaultServer (); server.save (c1); c1.setName ("Jane Wide"); c1.setAddress (null); szerver.save (c1); Az ügyfél megállapítottaC1 = Ebean.find (Customer.class, c1.getId ()); Ebean.delete (találtC1);

Először létrehozunk egy Vevő objektumot, és az alapértelmezett kiszolgálópéldányt használta a mentéshez mentés().

Ezután frissítjük az ügyfél adatait, és újból elmentjük a használatával mentés().

Végül a statikus módszert alkalmazzuk megtalálja() tovább Ebean az ügyfél beolvasásához és törléséhez töröl().

6. Lekérdezések

A Query API-k segítségével objektumgrafikon is létrehozható szűrőkkel és predikátumokkal. Vagy használhatjuk Ebean vagy EbeanServer lekérdezések létrehozására és végrehajtására.

Nézzünk meg egy lekérdezést, amely megtalálja a Vevő városonként és visszaadja a Vevő és Cím objektum csak néhány mezővel van feltöltve:

Ügyfél vevő = Ebean.find (Customer.class) .select ("név") .fetch ("cím", "város") .where () .eq ("város", "San Jose") .findOne ();

Itt, a megtalálja() jelezzük, hogy típusú entitásokat akarunk találni Vevő. Ezután használjuk válassza () hogy feltöltse a Vevő tárgy.

Később használjuk letöltés () jelezni, hogy be akarjuk tölteni a Cím a Vevő és hogy be akarjuk szerezni a város terület.

Végül hozzáadunk egy állítmányt, és az eredmény méretét 1-re korlátozzuk.

7. Tranzakciók

Az Ebean alapértelmezés szerint minden tranzakciót vagy lekérdezést új tranzakcióban hajt végre.

Bár ez bizonyos esetekben nem lehet kérdés. Vannak esetek, amikor egy tranzakción belül egy sor állítást szeretnénk végrehajtani.

Ilyen esetekben, ha a módszerrel annotáljuk a módszert io.ebean.annotations.Transactionional, a metóduson belüli összes utasítás ugyanabban a tranzakcióban fog végrehajtódni:

@Transactional public static void insertAndDeleteInsideTransaction () {Ügyfél c1 = getCustomer (); EbeanServer szerver = Ebean.getDefaultServer (); szerver.save (c1); Ügyfél találtC1 = server.find (Customer.class, c1.getId ()); server.delete (foundC1); }

8. A projekt felépítése

Végül felépíthetjük a Maven projektet a következő paranccsal:

fordítsd az io.ebean: ebean-maven-plugin: enhancelt

9. Következtetés

Összefoglalva, megvizsgáltuk az Ebean alapvető jellemzőit, amelyek felhasználhatók az entitások fenntartására és lekérdezésére egy relációs adatbázisban.

Végül ez a kód elérhető a Githubon.


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