Vodič za Ebean ORM

1. Uvod

Ebean je objektno-relacijski alat za mapiranje napisan na Javi.

Podržava standardne JPA bilješke za prijavljivanje entiteta. Međutim, pruža puno jednostavniji API za trajanje. Zapravo, jedna od točaka koje vrijedi spomenuti u vezi s ebejskom arhitekturom jest ta da je ona bez sesija, što znači da ne upravlja u potpunosti entitetima.

Osim toga, također dolazi s API-jem upita i podržava pisanje upita u izvornom SQL-u. Ebean podržava sve glavne davatelje baza podataka kao što su Oracle, Postgres, MySql, H2 itd.

U ovom uputstvu ćemo pogledati kako možemo stvoriti, ustrajati i tražiti entitete pomoću Ebean-a i H2.

2. Postavljanje

Za početak, uzmimo naše ovisnosti kao i neke osnovne konfiguracije.

2.1. Ovisnosti Mavena

Prije nego što započnemo, uvezimo potrebne ovisnosti:

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

Najnovije verzije Ebean, H2 i Logback mogu se naći na Maven Central.

2.2. Poboljšanja

Ebean mora izmijeniti grah entiteta tako da njima može upravljati poslužitelj. Stoga ćemo dodati dodatak Maven za obavljanje tog posla:

 io.ebean ebean-maven-plugin 11.11.2 glavne klase procesa otklanjanje pogrešaka = 1 poboljšanje 

Također, Maven dodatku moramo dati imena paketa koji sadrže entitete i klase koji koriste transakcije. Da bismo to učinili, kreiramo datoteku ebean.mf:

paketi entiteta: com.baeldung.ebean.model transakcijski paketi: com.baeldung.ebean.app

2.3. Sječa drva

Stvorimo i mi logback.xml i postavite razine zapisivanja na nekim paketima na TRAG tako da možemo vidjeti izjave koje se izvršavaju:

3. Konfiguriranje poslužitelja

Moramo stvoriti EbeanServer instanci za spremanje entiteta ili pokretanje upita u bazi podataka. Postoje dva načina na koja možemo stvoriti instancu poslužitelja - koristeći zadanu datoteku svojstava ili to učiniti programski.

3.1. Korištenje datoteke zadanih svojstava

Zadana datoteka svojstava može biti tipa Svojstva ili yaml. Ebean će tražiti konfiguraciju u datotekama s imenima primjena.svojstva, ebean.svojstva ili primjena.iml.

Osim pružanja detalja veze baze podataka, možemo uputiti Ebean da kreira i pokreće DDL izjave.

Sada, pogledajmo primjer konfiguracije:

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.Vozač

3.2. Korištenje ServerConfig

Dalje, pogledajmo kako možemo isti poslužitelj programski stvoriti pomoću EbeanServerFactory i ServerConfig:

ServerConfig cfg = novi ServerConfig (); Svojstva svojstva = new Svojstva (); svojstva.put ("ebean.db.ddl.generate", "true"); svojstva.put ("ebean.db.ddl.run", "true"); svojstva.put ("datasource.db.username", "sa"); svojstva.put ("datasource.db.password", ""); svojstva.put ("datasource.db.databaseUrl", "jdbc: h2: mem: app2"; properties.put ("datasource.db.databaseDriver", "org.h2.Driver"); cfg.loadFromProperties (svojstva); EbeanServer poslužitelj = EbeanServerFactory.create (cfg);

3.3. Zadana instanca poslužitelja

Samac EbeanServer primjer preslikava u jednu bazu podataka. Ovisno o našim zahtjevima, mogli bismo ih stvoriti više EbeanServer primjer također.

Ako se stvori samo jedna instanca poslužitelja, prema zadanim postavkama ona se registrira kao zadana instanca poslužitelja. Može mu se pristupiti bilo gdje u aplikaciji pomoću statičke metode na Ebean razred:

EbeanServer poslužitelj = Ebean.getDefaultServer ();

U slučaju da postoji više baza podataka, moguće je registrirati jednu od instanci poslužitelja kao zadanu:

cfg.setDefaultServer (true);

4. Stvaranje entiteta

Ebean pruža potpunu podršku za JPA bilješke, kao i dodatne značajke koristeći vlastite bilješke.

Stvorimo nekoliko entiteta koristeći i JPA i Ebean bilješke. Prvo ćemo stvoriti BaseModel koja sadrži svojstva koja su zajednička za sve entitete:

@MappedSuperclass javni sažetak klase BaseModel {@Id zaštićen dugi id; @Version zaštićena duga verzija; @WhenCreate zaštićen Instant createdOn; @WhenModified zaštićen Instant modifiedOn; // geteri i postavljači}

Ovdje smo koristili MappedSuperClass JPA bilješka za definiranje BaseModel. I dvije ebejske bilješke io.ebean.annotation.WhenCreate i io.ebean.annotation.WhenModified u svrhu revizije.

Dalje ćemo stvoriti dva entiteta Kupac i Adresa koji se protežu BaseModel:

@Entity javni razred Klijent proširuje BaseModel {javni kupac (naziv niza, adresa adrese) {super (); this.name = ime; this.address = adresa; } ime privatnog niza; @OneToOne (cascade = CascadeType.ALL) Adresa adrese; // geteri i postavljači} 
Adresa javne klase @Entity proširuje BaseModel {javna adresa (String addressLine1, String addressLine2, String city) {super (); this.addressLine1 = addressLine1; this.addressLine2 = addressLine2; this.city = grad; } private String addressLine1; private String addressLine2; privatni gudački grad; // geteri i postavljači}

U Kupac, definirali smo mapiranje jedan na jedan sa Adresa i dodao postavljeni tip kaskade na SVI tako da se podređeni entiteti također ažuriraju zajedno s nadređenim entitetima.

5. Osnovne CRUD operacije

Ranije smo vidjeli kako konfigurirati EbeanServer i stvorio dva entiteta. Sada, izvedimo neke osnovne CRUD operacije na njima.

Koristit ćemo zadanu instancu poslužitelja za ustrajanje i pristup podacima. The Ebean klasa također pruža statičke metode za ustrajanje i pristup podacima koji proksiraju zahtjev prema zadanoj instanci poslužitelja:

Adresa a1 = nova adresa ("5, Wide Street", null, "New York"); Kupac c1 = novi kupac ("John Wide", a1); EbeanServer poslužitelj = Ebean.getDefaultServer (); server.save (c1); c1.setName ("Jane Wide"); c1.setAddress (null); server.save (c1); Pronađeni kupacC1 = Ebean.find (Customer.class, c1.getId ()); Ebean.delete (pronađenoC1);

Prvo stvorimo a Kupac objekt i koristio zadanu instancu poslužitelja za spremanje pomoću uštedjeti().

Dalje, ažuriramo podatke o kupcu i spremamo ih ponovno pomoću uštedjeti().

Konačno, koristimo statičku metodu pronaći() na Ebean po kupca i izbrisati ga pomoću izbrisati().

6. Upiti

API-ji upita također se mogu koristiti za stvaranje grafa objekta s filtrima i predikatima. Možemo ili koristiti Ebean ili EbeanServer za stvaranje i izvršavanje upita.

Pogledajmo upit koji pronalazi Kupac po gradu i vraća se a Kupac i Adresa objekt sa samo neka popunjena polja:

Kupac kupac = Ebean.find (Customer.class) .select ("name") .fetch ("address", "city") .where () .eq ("city", "San Jose") .findOne ();

Evo, sa pronaći() naznačujemo da želimo pronaći entitete tipa Kupac. Dalje, koristimo Odaberi() da odredite svojstva koja se popunjavaju u Kupac objekt.

Kasnije koristimo dohvati () kako bi naznačili da želimo dohvatiti Adresa objekt koji pripada Kupac i da želimo dohvatiti Grad polje.

Na kraju dodamo predikat i ograničimo veličinu rezultata na 1.

7. Transakcije

Ebean izvršava svaki izraz ili upit u novoj transakciji prema zadanim postavkama.

Iako ovo u nekim slučajevima možda nije problem. Postoje slučajevi kada bismo možda željeli izvršiti skup izjava unutar jedne transakcije.

U takvim slučajevima, ako metodu označimo s io.ebean.annotations.Transational, svi izrazi unutar metode izvršit će se unutar iste transakcije:

@Transactional javna statička praznina insertAndDeleteInsideTransaction () {Kupac c1 = getCustomer (); EbeanServer poslužitelj = Ebean.getDefaultServer (); server.save (c1); Pronađeni kupacC1 = server.find (Customer.class, c1.getId ()); server.delete (foundC1); }

8. Izgradnja projekta

I na kraju, možemo izgraditi Maven projekt pomoću naredbe:

sastaviti io.ebean: ebean-maven-plugin: poboljšati

9. Zaključak

Da rezimiramo, pregledali smo osnovne značajke Ebeana koje se mogu koristiti za upornost i ispitivanje entiteta u relacijskoj bazi podataka.

Napokon, ovaj je kôd dostupan na Githubu.


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