Java >> Java opplæring >  >> Tag >> XML

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

Java Tag