Persistere un oggetto (entity bean) con JPA

Posted on 11th Nov 2014 20:14:59 in MySQL, JPA, J2EE, Entity Bean, EJB, Eclipse

Progetto JPA con Eclipse(Kepler) + EclipseLink 2.5 + MySQL 5.

Installare MySQL, e creare un database, nel nostro esempio il database creato si chiama test

Creare una tabella nel database test. La tabella che creo si chiama user ed ha come campi:

 

iduser  int not null (chiave primaria);
username varchar(45) not null;
usersurname varchar(45) not null;
age int;

Per creare un nuovo DB ed una nuova tabella nel DB io ho usato MySQL Workbench versione 6.0, lo si può scaricare dal sito ufficiale di MySQL.

Creare un nuovo progetto in Eclipse di tipo JPA (File -> New -> JPA Project).

Creare una classe che è associata all’oggetto da persistere nella tabella user creata. Eclipse ci dà la possibilità di creare una classe Entity Bean ricavandola da una tabella.

Tasto destro del mouse sul progetto e selezionare New -> JPA Entities from tables, il wizard indica di selezionare una connessione MySQL, il database presente su questa connessione e le tabelle nel DB.

Il codice crea per la classe JPA Entity:

 
package model;

import java.io.Serializable;

import javax.persistence.Entity;

import javax.persistence.Id;

import javax.persistence.NamedQuery;

/**

* The persistent class for the user database table.

*/

@Entity

public class User implements Serializable {

private static final long serialVersionUID = 1L;

@Id

private int iduser;

private int age;

private String username;

private String usersurname;

public User() {

}

public int getIduser() {

return this.iduser;

}

public void setIduser(int iduser) {

this.iduser = iduser;

}

public int getAge() {

return this.age;

}

public void setAge(int age) {

this.age = age;

}

public String getUsername() {

return this.username;

}

public void setUsername(String username) {

this.username = username;

}

public String getUsersurname() {

return this.usersurname;

}

public void setUsersurname(String usersurname) {

this.usersurname = usersurname;

}

}
 

Modificare la build path del progetto:

tasto destro del mouse sul progetto e selezionare Build Path -> Configure build path. Tra le proprietà del progetto scegliere Java build path e portarsi nel tab Libraries, e selezionare Add external Jar per importare il jar javax.persistence.xxx.jar.

 

Creare una classe Java di test che contiene il metodo main, ed usa un EntityManager per persistere i dati nella tabella user. Il codice di esempio potrebbe essere il seguente:

package model;

import javax.ejb.EJB;

import javax.persistence.EntityManager;

import javax.persistence.EntityManagerFactory;

import javax.persistence.Persistence;

public class TestJPA {

private static final String PERSISTENCE_UNIT_NAME = "jdbc/Test";

private static EntityManagerFactory factory;

public static void main(String[] args) {

factory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME);

EntityManager em = factory.createEntityManager();

em.getTransaction().begin();

User user = new User();

// Create new user

user.setIduser(2);

user.setUsername("Mario");

user.setUsersurname("Rossi");

user.setAge(45);

em.persist(user);

em.getTransaction().commit();

em.close();

}

}

Prima di eseguire il progetto bisogna modificare ancora la build path, aggiungendo altri external jars:

abbiamo bisogno del file eclipselink.jar che ci fornisce un provider per la persistenza;

il file mysql-connector-java-5.1.0.jar;

Modifichiamo anche le proprietà JPA come di seguito:

JPA project properties

 Ora è importante controllare il file persistence.xml che troviamo nel nostro progetto in Eclipse sotto la sezione JPA Content.

 

"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">
       
                model.User
               
                       
                       
                       
                       
               
       

Inserire nel campo value e password le proprie credenziali per la connessione al database usato, nel nostro esempio abbiamo usato il database test localizzato all’url   jdbc:mysql://localhost:3306/test.

Il file persistence.xml indica con il nome persistence-unit (nel nostro caso jdbc/Test) tutte le classi entities gestite dall’EntityManager.

Ora possiamo eseguire l’applicazione TestJPA (tasto destro del mouse sul file TestJPA.java e selezionare Runa as->Java Application). Il risultato dell’esecuzione è l’inserimento di un oggetto User nella tabella user. L’oggetto è un record in tabella e conterrà i dati impostati da programma. Per verificare che l’inserimento è stato realmente eseguito selezionare dalla barra dei menù in Eclipse, il tasto Window -> Open Perspective -> Other -> Database Development.

Nel Tab DataSource Explore (se non si vede andare di nuovo sul menù Window -> Show View -> DataSource Explorer) aggiungere una nuova connessione al database MySQL, creata questa connettersi e verranno visualizzati i database creati (nel nostro caso “test”) con gli schemi e le table. Tasto destro del mouse sulla tabella e scegliere Data -> Sample contents. Verrà aperta una schermata che visualizza i record inseriti in tabella.