Está en la página 1de 18

1/18

Introduccin a JPA
Verificar que est activo el plugin Java Web and EE
Seleccionar el men Tools > Plugins.

Se abre el cuadro de dilogo Plugins. Selecciona la pestaa Installed.

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.

Crear un proyecto que maneje JPA


Selecciona el men File > New Project...

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.

Selecciona el men File > New 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/.

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.

Crea otra clase en el mismo paquete, de nombre CtrlConocidos.

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;

public class CtrlConocidos {


private static final EntityManagerFactory emf = EMF.getEntityManagerFactory();
/**
* Lista todos los conocidos registrados.
* @return Una lista con todos los conocidos registrados.
*/
public List<Conocido> lista() {
final EntityManager em = getEntityManager();
List<Conocido> lista;
try {

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

lista = em.createQuery("SELECT c FROM Conocido c ORDER BY c.nombre",


Conocido.class).getResultList();
} finally {
em.close();
}
return lista;

}
/**
* 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

Levantar el servidor de Bases de Datos


Selecciona la pestaa Services. Puedes establecer conexin con las bases de datos de la carpeta Drivers. Si
tienes instalado MySQL en tu computadora, aparece entre las opciones de Databases. En este caso se usa
Java DB, que viene en el JDK.

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.

Declarar las libreras de JDBC


Java requiere clases especiales para conectarse con las bases de datos. En este case configuramos las de
Derby. Selecciona el proyecto.

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).

Aparece el cuadro de dilogo Project Properties.

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.

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/.

16/18
Aparece el cuadro de dilogo para agregar libreras. Selecciona Java DB Driver y haz clic en Add Library.

Haz clic en OK.

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.

El programa se ejecuta y muestra el resultado.

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

Aparece una pestaa con la instruccin SQL y los datos.

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/.

También podría gustarte