JPA persistence.xml Eksempel
Hei lesere! I denne opplæringen vil vi vise hvordan du implementerer Java Persistence API og definerer JPA Persistence Units med EclipseLink og MySQL i Java.
1. Introduksjon
Java Persistence API (JPA), er et standard grensesnitt som omslutter de forskjellige Object Relational Mapping (ORM)-verktøyene som Hibernate, EclipseLink, OpenJPA osv. JPA gir en javax.persistence.EntityManager
grensesnitt som brukes til å samhandle med databasen. Forekomsten av EntityManager
spiller rundt persistenskonteksten og EntityManagerFactory
samhandler med EntityManager
objekt.
- Persistenskontekst er settet med enhetsforekomster der det for enhver vedvarende enhetsidentitet er en unik enhetsforekomst. Livssyklusen til enhetsforekomster administreres innenfor persistenskonteksten ved å bruke
EntityManager
. Vi kan koble fra og slå sammen enhetsforekomstene innenfor en persistenskontekst - Enhetsleder er en modell lånt fra de tradisjonelle JDBC-rammeverkene, dvs. gjør det enklere for utviklerne å utføre de grunnleggende databaseoperasjonene med svært lite kode
I dette frittstående JPA-eksemplet bruker vi EclipseLink med MySQL-databasen. EclipseLink er et populært åpen kildekode ORM (Object Relation Mapping)-verktøy for Java-plattform som brukes til å kartlegge en enhet til en tradisjonell relasjonsdatabase som Oracle, MySQL osv.
Utviklere kan sjekke tabellen nedenfor for de forskjellige databasene som er tilgjengelige med EclipseLink-eksempler:
Database | Sjåførklasse | Krukkenavn |
---|---|---|
MySQL | com.mysql.jdbc.Driver | mysql-connector-java-5.1.25-bin.jar (nøyaktig navn avhenger av versjon) http://www.mysql.com/downloads/connector/j/ |
HSQLDB | org.hsqldb.jdbcDriver | hsqldb.jar http://hsqldb.sourceforge.net |
Sybase | com.sybase.jdbc3.jdbc.SybDriver | jconnect.jar http://www.sybase.com/products/allproductsa-z/softwaredeveloperkit/jconnect |
Apache Derby | org.apache.derby.jdbc.EmbeddedDriver | derby.jar http://db.apache.org/derby/ |
IBM DB2 | com.ibm.db2.jcc.DB2Driver | db2jcc4.jar http://www-01.ibm.com/software/data/db2/linux-unix-windows/download.html |
PostgreSQL | org.postgresql.Driver | postgresql-8.4-701.jdbc4.jar (nøyaktig navn avhenger av PostgreSQL-versjonen) http://jdbc.postgresql.org |
SQL-server (Microsoft-driver) | com.microsoft.sqlserver.jdbc.SQLServerDriver | sqljdbc4.jar http://msdn.microsoft.com/en-gb/data/aa937724%28en-us%29.aspx |
1.1 JPA-fordeler
Det er mange fordeler ved å bruke JPA-rammeverket, for f.eks.
- Fordelen med å bruke JPA-rammeverket fremfor alle spesifikke objektrelasjonsmodeller (ORM)-relaterte biblioteker som Hibernate, iBatis osv. er at utviklere ikke endrer koden når de endrer leverandør
- Koden er løst koblet til det underliggende ORM-rammeverket
- Forbedrer datasikkerhet og datatilgang til brukerne ved å bruke verts- og spørringsspråk
- Forbedrer applikasjonsytelsen ved å redusere dataredundansen
- Større dataintegritet og uavhengighet for applikasjonsprogrammer
- Gir enkel søking av data
1.2 Hvordan kan det oppnås?
Programmerere kan oppnå utholdenhet i applikasjonen ved å introdusere persistence.xml
i koden deres, som må være plassert i META-INF
katalogen i prosjektets klassebane. Én persistence.xml
filen kan inkludere definisjoner for en eller flere persistensenheter. Denne filen spiller en avgjørende rolle i konseptet med JPA som i denne konfigurasjonsfilen vil utviklere registrere databasen og spesifisere enhetsklassen. La oss ta en titt og forstå eksempelkoden.
Eksempel på persistence.xml
<?xml version="1.0" encoding="UTF-8"?> <persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"> <persistence-unit name="TestPersistence" transaction-type="RESOURCE_LOCAL"> <class><!-- Entity Manager Class Name --></class> <properties> <property name="javax.persistence.jdbc.driver" value="Database Driver Name" /> <property name="javax.persistence.jdbc.url" value="Database Url" /> <property name="javax.persistence.jdbc.user" value="Database Username" /> <property name="javax.persistence.jdbc.password" value="Database Password" /> </properties> </persistence-unit> </persistence>
persistence.xml
filen indikerer at det bare er én persistensenhet tilordnet med navnet TestPersistence og transaksjonstypen for denne persistensenheten er RESOURCE_LOCAL
. Det finnes to typer transaksjoner:
- JTA
- RESOURCE_LOCAL
Hvis utviklere velger RESOURCE_LOCAL
, så vil transaksjonen bli administrert av JPA-leverandørimplementeringen som er i bruk. Hvis JTA er spesifisert, vil transaksjonene bli administrert av applikasjonsserveren.
Husk, hvis en utvikler bare ønsker å ha JPA-transaksjoner, så RESOURCE_LOCAL
er et godt valg. Men hvis en utvikler vil at transaksjonene skal inneholde andre ressurser enn JPA, som EJBs, JMS, så JTA
er det riktige valget.
1.3 Last ned og installer EclipseLink
Du kan se denne videoen for å laste ned og installere JPA i Eclipse via EclipseLink.
1.4 Last ned og installer MySQL
Du kan se denne videoen for å laste ned og installere MySQL-databasen på ditt Windows-operativsystem.
Åpne nå Eclipse Ide og la oss se hvordan du implementerer og definerer JPA Persistence-enhetene i persistence.xml
.
2. Java persistence.xml Eksempel
2.1 Brukte verktøy
Vi bruker Eclipse Kepler SR2, JDK 8, MySQL og Maven. Når det er sagt, har vi testet koden mot JDK 1.7 og den fungerer bra.
2.2 Prosjektstruktur
La oss først se på den endelige prosjektstrukturen, i tilfelle du er forvirret om hvor du bør lage de tilsvarende filene eller mappen senere!
Fig. 1:Søknadens prosjektstruktur
2.3 Prosjektopprettelse
Denne delen vil demonstrere hvordan du lager et Java-basert Maven-prosjekt med Eclipse. I Eclipse IDE, gå til File -> New -> Maven Project
.
Fig. 2:Lag Maven Project
I vinduet New Maven Project vil det be deg velge en prosjektplassering. Som standard vil "Bruk standard arbeidsområdeplassering" være valgt. Merk av for "Opprett et enkelt prosjekt (hopp over arketypevalg)" og klikk bare på neste-knappen for å fortsette.
Fig. 3:Prosjektdetaljer
Den vil be deg om å "skrive inn gruppen og artefakt-IDen for prosjektet". Vi legger inn detaljene som vist i bildet nedenfor. Versjonsnummeret vil som standard være:0.0.1-SNAPSHOT
.
Fig. 4:Arketypeparametere
Klikk på fullfør og opprettelsen av et maven-prosjekt vil bli fullført. Hvis du observerer, har den lastet ned maven-avhengighetene og en pom.xml
filen vil bli opprettet. Den vil ha følgende kode:
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>JPADemo</groupId> <artifactId>JPADemo</artifactId> <version>0.0.1-SNAPSHOT</version> </project>
Vi kan begynne å legge til avhengighetene som utviklere vil ha som Eclipse Link, MySQL Connector Jar og Hibernate osv. La oss begynne å bygge applikasjonen!
3. Applikasjonsbygg
Nedenfor er trinnene involvert i å utvikle denne applikasjonen.
3.1 Database og tabelloppretting
Følgende MySQL-skript brukes til å lage en database kalt jpaDemoDb
med tabell:farmer
. Åpne MySQL- eller arbeidsbenkterminalen og kjør SQL
script:
CREATE DATABASE jpaDemoDb; USE jpaDemoDb; CREATE TABLE farmer ( id INTEGER NOT NULL, name VARCHAR(120) NOT NULL, village VARCHAR(200) NOT NULL, PRIMARY KEY(id) ); DESC farmer;
Hvis alt går bra, vil databasen og tabellen vises i MySQL Workbench.
Fig. 5:Database og tabelloppretting
3.2 Maven-avhengigheter
I dette eksemplet bruker vi den stabile Hibernate-, MySQL- og Eclipse Link-versjonen for å støtte JPA-innholdet og lage en vellykket databasetilkobling. Resten-avhengighetene løses automatisk av Maven og den oppdaterte filen vil ha følgende kode:
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>JPADemo</groupId> <artifactId>JPADemo</artifactId> <version>0.0.1-SNAPSHOT</version> <dependencies> <!-- https://mvnrepository.com/artifact/org.eclipse.persistence/eclipselink --> <dependency> <groupId>org.eclipse.persistence</groupId> <artifactId>eclipselink</artifactId> <version>2.5.2</version> </dependency> <dependency> <groupId>org.eclipse.persistence</groupId> <artifactId>javax.persistence</artifactId> <version>2.0.0</version> </dependency> <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.40</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> <version>4.2.8.Final</version> </dependency> <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-core --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>5.2.11.Final</version> </dependency> </dependencies> <build> <finalName>${project.artifactId}</finalName> </build> </project>
3.3 Java Class Creation
La oss lage de nødvendige Java-filene. Høyreklikk på src/main/java
mappe, New -> Package
.
Fig. 6:Java-pakkeopprettelse
Et nytt pop-vindu åpnes der vi vil skrive inn pakkenavnet som:com.jcg.jpa.demo
.
Fig. 7:Java-pakkenavn (com.jcg.jpa.demo)
Når pakken er opprettet, må vi lage modellen og implementeringsklassene. Høyreklikk på den nyopprettede pakken, New -> Class
.
Fig. 8:Java Class Creation
Et nytt pop-vindu åpnes og skriv inn filnavnet som:Farmer
. Modellklassen vil bli opprettet inne i pakken:com.jcg.jpa.demo
.
Fig. 9:Java-klasse (Farmer.java)
Gjenta trinnet (f.eks. Fig. 8) og skriv inn filnavnet som:JPADemo
. Implementeringsklassen vil bli opprettet inne i pakken:com.jcg.jpa.demo
.
Fig 10:Java-klasse (JPADemo.java)
3.3.1 Implementering av modellklasse
Denne klassen tilordner ganske enkelt en rad i farmer
tabell til et Java-objekt. Legg til følgende kode:
Farmer.java
package com.jcg.jpa.demo; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table(name="farmer") public class Farmer { @Id @Column(name="id") private int id; @Column(name="name") private String name; @Column(name="village") private String village; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getVillage() { return village; } public void setVillage(String village) { this.village = village; } }
3.3.2 Implementering av verktøyklasse
Dette er tjenesteklassen som implementerer Java Persistence API for å utføre en databasetransaksjon (dvs. SQL
INSERT operasjon). Legg til følgende kode:
JPADemo.java
package com.jcg.jpa.demo; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence; public class JPADemo { private static final EntityManagerFactory emFactoryObj; private static final String PERSISTENCE_UNIT_NAME = "JPADemo"; static { emFactoryObj = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME); } // This Method Is Used To Retrieve The 'EntityManager' Object public static EntityManager getEntityManager() { return emFactoryObj.createEntityManager(); } public static void main(String[] args) { EntityManager entityMgr = getEntityManager(); entityMgr.getTransaction().begin(); Farmer farmObj = new Farmer(); farmObj.setId(101); farmObj.setName("Harry Potter"); farmObj.setVillage("Scottish Highlands"); entityMgr.persist(farmObj); entityMgr.getTransaction().commit(); entityMgr.clear(); System.out.println("Record Successfully Inserted In The Database"); } }
3.4 Databasekonfigurasjonsfil
Utviklere kan oppnå utholdenhet i applikasjonen ved å introdusere persistence.xml
i koden deres. Denne modulen spiller en avgjørende rolle i konseptet med JPA, da vi i denne konfigurasjonsfilen vil registrere databasen og spesifisere enhetsklassen. Opprett en katalog META-INF
i src/main/java-mappen og lag filen persistence.xml
inni det. Legg til følgende kode:
persistence.xml
<?xml version="1.0" encoding="UTF-8"?> <persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"> <persistence-unit name="JPADemo" transaction-type="RESOURCE_LOCAL"> <class>com.jcg.jpa.demo.Farmer</class> <properties> <!-- Configuring The Database Connection Details --> <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" /> <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/jpaDemoDb" /> <property name="javax.persistence.jdbc.user" value="root" /> <property name="javax.persistence.jdbc.password" value="" /> </properties> </persistence-unit> </persistence>
Merknader :
- I dette eksemplet kobler vi applikasjonen til MySQL-databasen. Så utviklere må legge til MySQL-connector-java-
-bin.jar til prosjektet - Vi har beholdt
javax.persistence.jdbc.password
verdi som blank for enkelhets skyld, men det er rent for brukeren å holde den tom eller sette den under MySQL-konfigurasjonen. Hvis brukeren angir det, må vi oppgi det samme passordet til denne strengen
4. Kjør programmet
For å kjøre programmet, høyreklikk på JPADemo
klasse, Run As -> Java Application
. Utviklere kan feilsøke eksemplet og se hva som skjer etter hvert trinn. Nyt!
Fig. 11:Kjør applikasjon
5. Prosjektdemo
Etter å ha kjørt koden, viser applikasjonen følgende status som utdata:
Fig. 12:Applikasjonsutgang
Det var alt for dette innlegget. Lykke til med læring!!
6. Konklusjon
Gjennom dette eksempelet lærte vi om JPA-implementeringen i Java. Jeg håper denne artikkelen tjente deg det du lette etter. Utviklere kan laste ned eksempelapplikasjonen som et Eclipse-prosjekt i nedlastingsdelen.
7. Last ned Eclipse Project
Dette var et eksempel på JPA persistence.xml
.core java enterprise java Java 8 jpa persistence.xml