Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Introduccin a JPA
Verificar que est activo el plugin Java Web and EE
Seleccionar el men Tools > Plugins.
Esta obra est licenciada bajo la Licencia Creative Commons Atribucin-NoComercial 4.0 Internacional. Para ver
una copia de esta licencia, visita http://creativecommons.org/licenses/by-nc/4.0/.
2/18
Verificar que el plugin Java Web and EE est activo. SI no lo est, hacer clic en su casilla de verificacin y
luego en el botn Activate.
Esta obra est licenciada bajo la Licencia Creative Commons Atribucin-NoComercial 4.0 Internacional. Para ver
una copia de esta licencia, visita http://creativecommons.org/licenses/by-nc/4.0/.
3/18
En la categora Java selecciona Java Application y luego haz clic en Next.
Asigna nombre para el proyecto, que en este caso es Jpa1 y haz clic en Finish.
Esta obra est licenciada bajo la Licencia Creative Commons Atribucin-NoComercial 4.0 Internacional. Para ver
una copia de esta licencia, visita http://creativecommons.org/licenses/by-nc/4.0/.
4/18
Haz clic en el paquete de la aplicacin.
Esta obra est licenciada bajo la Licencia Creative Commons Atribucin-NoComercial 4.0 Internacional. Para ver
una copia de esta licencia, visita http://creativecommons.org/licenses/by-nc/4.0/.
5/18
En la categora Persistence selecciona Entity Class y haz clic en Next >.
Introduce el nombre de la clase, que en este caso es Conocido. Verifica que el paquete sea jpa1 y haz clic en
Next >.
Esta obra est licenciada bajo la Licencia Creative Commons Atribucin-NoComercial 4.0 Internacional. Para ver
una copia de esta licencia, visita http://creativecommons.org/licenses/by-nc/4.0/.
6/18
Se solicita el proveedor de JPA y la conexin de base de datos. Anota el valor del Persistence Unit Name
porque se usa en el cdigo. En este caso es Jpa1PU. Selecciona la Database Connection
jdbc:derby://localhost:1527/sample. Haz clic en Finish.
Faltan dos clases en el paquete. Para crearlas, haz clic derecho en el paquete de la aplicacin, que en este
caso es jpa1. Selecciona el men New > Java Class...
Esta obra est licenciada bajo la Licencia Creative Commons Atribucin-NoComercial 4.0 Internacional. Para ver
una copia de esta licencia, visita http://creativecommons.org/licenses/by-nc/4.0/.
7/18
El valor para Class Name es EMF y Package jpa1. Haz clic en Finish.
Cdigo Java
META-INF/persistence.xml
1 <?xml version="1.0" encoding="UTF-8"?>
2 <persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence"
3
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence
5
http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
6
<persistence-unit name="Jpa1PU" transaction-type="RESOURCE_LOCAL">
7
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
8
<class>jpa1.Conocido</class>
9
<properties>
10
<property name="javax.persistence.jdbc.url"
11
value="jdbc:derby://localhost:1527/sample"/>
12
<property name="javax.persistence.jdbc.user" value="app"/>
13
<property name="javax.persistence.jdbc.driver"
14
value="org.apache.derby.jdbc.ClientDriver"/>
15
<property name="javax.persistence.jdbc.password" value="app"/>
16
<property name="javax.persistence.schema-generation.database.action"
Esta obra est licenciada bajo la Licencia Creative Commons Atribucin-NoComercial 4.0 Internacional. Para ver
una copia de esta licencia, visita http://creativecommons.org/licenses/by-nc/4.0/.
8/18
17
value="create"/>
18
</properties>
19
</persistence-unit>
20 </persistence>
EMF.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package jpa1;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
public class EMF {
private static final EntityManagerFactory entityManagerFactory = Persistence
.createEntityManagerFactory("Jpa1PU");
private EMF() {
}
public static EntityManagerFactory getEntityManagerFactory() {
return entityManagerFactory;
}
}
Conocido.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package jpa1;
import
import
import
import
import
import
java.io.Serializable;
java.util.Objects;
javax.persistence.Entity;
javax.persistence.GeneratedValue;
javax.persistence.GenerationType;
javax.persistence.Id;
@Entity
public class Conocido implements Serializable {
private static final long serialVersionUID = 1L;
@Id @GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String nombre;
// Se recomienda no usar acentos en los nombres de la base de datos.
private String telefono;
public Conocido() {
}
public Conocido(String nombre, String telefono) {
this.nombre = nombre;
this.telefono = telefono;
}
public Long getId() {
return id;
}
public void setId(Long id) {
Esta obra est licenciada bajo la Licencia Creative Commons Atribucin-NoComercial 4.0 Internacional. Para ver
una copia de esta licencia, visita http://creativecommons.org/licenses/by-nc/4.0/.
9/18
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58 }
59
this.id = id;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getTelefono() {
return telefono;
}
public void setTelefono(String telefono) {
this.telefono = telefono;
}
@Override public int hashCode() {
return Objects.hashCode(getId());
}
@Override public boolean equals(Object object) {
// Los objetos con el mismo id se consideran iguales.
if (object instanceof Conocido) {
final Conocido other = (Conocido) object;
return Objects.equals(getId(), other.getId());
} else {
return false;
}
}
@Override public String toString() {
return "jpa1.Conocido[id=" + id + ", nombre=" + nombre + ", telefono="
+ telefono + "]";
}
CtrlConocidos.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package jpa1;
import
import
import
import
java.util.List;
javax.persistence.EntityManager;
javax.persistence.EntityManagerFactory;
javax.persistence.EntityTransaction;
Esta obra est licenciada bajo la Licencia Creative Commons Atribucin-NoComercial 4.0 Internacional. Para ver
una copia de esta licencia, visita http://creativecommons.org/licenses/by-nc/4.0/.
10/18
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
}
/**
* Busca un objeto en base a su id.
* @param id la llave primaria del objeto.
* @return el objeto asociado al id, o null si no est registrado.
*/
public Conocido busca(Long id) {
EntityManager em = getEntityManager();
try {
return em.find(Conocido.class, id);
} finally {
em.close();
}
}
/**
* Agrega un nuevo conocido.
* @param modelo el conocido por agregar.
* @return el conocido como queda almacenado en la base de datos, incluido el
* id generado.
*/
public Conocido agrega(Conocido modelo) {
final EntityManager em = getEntityManager();
try {
final EntityTransaction tx = em.getTransaction();
tx.begin();
em.persist(modelo);
tx.commit();
return modelo;
} finally {
em.close();
}
}
/**
* Actualiza un conocido ya registrado. Si el conocido no est registrado, se
* lanza una excepcin.
* @param modelo el conocido por actualizar.
* @return el conocido actualizado.
*/
public Conocido modifica(Conocido modelo) {
final EntityManager em = getEntityManager();
try {
final EntityTransaction tx = em.getTransaction();
tx.begin();
modelo = em.merge(modelo);
tx.commit();
return modelo;
} finally {
Esta obra est licenciada bajo la Licencia Creative Commons Atribucin-NoComercial 4.0 Internacional. Para ver
una copia de esta licencia, visita http://creativecommons.org/licenses/by-nc/4.0/.
11/18
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98 }
99
em.close();
}
}
/**
* Elimina el conocido con la llave primaria id.
* @param id la llave primaria del conocido que se elimina.
*/
public void elimina(Long id) {
final EntityManager em = getEntityManager();
try {
final EntityTransaction tx = em.getTransaction();
tx.begin();
// Busca un conocido usando su llave primaria.
final Conocido modelo = em.find(Conocido.class, id);
if (modelo != null) {
/* Si la referencia no es nula, significa que el modelo se encontr la
* referencia no es nula y se elimina. */
em.remove(modelo);
}
tx.commit();
} finally {
em.close();
}
}
private static EntityManager getEntityManager() {
return emf.createEntityManager();
}
Jpa1.java
1 package jpa1;
2
3 public class Jpa1 {
4
public static void main(String[] args) {
5
final CtrlConocidos ctrlConocidos = new CtrlConocidos();
6
final Conocido pp = new Conocido("Pp", "55555555");
7
System.out.print("Contenido original de pp: ");
8
System.out.println(pp);
9
ctrlConocidos.agrega(pp);
10
System.out.println("Despus de agregar: " + pp);
11
final Long idPp = pp.getId();
12
System.out.println(pp);
13
pp.setNombre("Pp Pp");
14
pp.setTelefono("555555556");
15
System.out.println("Despus de modificar: " + ctrlConocidos.modifica(pp));
16
System.out.println("El objeto de la referencia pp: " + pp);
17
System.out.println("El objeto en la base de datos: " + ctrlConocidos.busca(
18
idPp));
19
ctrlConocidos.agrega(new Conocido("Qk", "121212121212"));
20
ctrlConocidos.agrega(new Conocido("Tt", "777777777777"));
Esta obra est licenciada bajo la Licencia Creative Commons Atribucin-NoComercial 4.0 Internacional. Para ver
una copia de esta licencia, visita http://creativecommons.org/licenses/by-nc/4.0/.
12/18
21
System.out.println("Contenido de la base: " + ctrlConocidos.lista());
22
ctrlConocidos.elimina(idPp);
23
System.out.println("Sin Pp: " + ctrlConocidos.lista());
24
}
25 }
26
Esta obra est licenciada bajo la Licencia Creative Commons Atribucin-NoComercial 4.0 Internacional. Para ver
una copia de esta licencia, visita http://creativecommons.org/licenses/by-nc/4.0/.
13/18
Haz clic derecho en Java DB y selecciona Start Server.
Esta obra est licenciada bajo la Licencia Creative Commons Atribucin-NoComercial 4.0 Internacional. Para ver
una copia de esta licencia, visita http://creativecommons.org/licenses/by-nc/4.0/.
14/18
Selecciona el men File > Project Properties (Jpa1).
Esta obra est licenciada bajo la Licencia Creative Commons Atribucin-NoComercial 4.0 Internacional. Para ver
una copia de esta licencia, visita http://creativecommons.org/licenses/by-nc/4.0/.
15/18
Selecciona la category Libraries.
Esta obra est licenciada bajo la Licencia Creative Commons Atribucin-NoComercial 4.0 Internacional. Para ver
una copia de esta licencia, visita http://creativecommons.org/licenses/by-nc/4.0/.
16/18
Aparece el cuadro de dilogo para agregar libreras. Selecciona Java DB Driver y haz clic en Add Library.
Esta obra est licenciada bajo la Licencia Creative Commons Atribucin-NoComercial 4.0 Internacional. Para ver
una copia de esta licencia, visita http://creativecommons.org/licenses/by-nc/4.0/.
17/18
Ejecutar el programa
Haz clic derecho en la clase Jpa1.java y selecciona el men Run File.
Esta obra est licenciada bajo la Licencia Creative Commons Atribucin-NoComercial 4.0 Internacional. Para ver
una copia de esta licencia, visita http://creativecommons.org/licenses/by-nc/4.0/.
18/18
Para ver los datos almacenados, regresa a la pestaa Services. Abre el rbol de la conexin, abre APP y
Tables. Haz clic derecho en la tabla CONOCIDO y selecciona View Data...
Esta obra est licenciada bajo la Licencia Creative Commons Atribucin-NoComercial 4.0 Internacional. Para ver
una copia de esta licencia, visita http://creativecommons.org/licenses/by-nc/4.0/.