Una de las grandes ventajas de JPA es que nos permite manipular la base de datos a través de objetos, estos objetos son conocidos como Entity, las cuales son clases comunes y corrientes también llamada POJO’s (Plain Old Java Objects), estas clases tiene la particularidad de ser clases que están mapeadas contra una tabla de la base de datos, dicho mapeo se lleva a cabo generalmente mediante Anotaciones. Dichas anotaciones brindan los suficientes metadatos como para poder por relacionar las clases contra las tablas y las propiedades contra las columnas. Es de esta forma que JPA es capaz de interactuar con la base de datos a través de las clases.
A lo largo de este capítulo y los siguientes estaremos estudiando las diversas anotaciones que nos permitirán crear nuestras Entity así como relacionar entidades con otras.
Anotación @Entity
Como ya discutimos hace un momento, las entidades son POJO’s por lo que son simples clases Java como cualquier otra, sin embargo, JPA debe de ser capaz de identificar que clases son Entity para de esta forma poderlas administrar. Es aquí donde nace la importancia de la anotación @Entity, esta anotación se debe de definir a nivel de clase y sirve únicamente para indicarle a JPA que esa clase es una Entity, veamos el siguiente ejemplo:
package com.obb.jpa.jpaturorial.entity; import java.util.Calendar; /** * * @author Oscar Blancarte */ public class Employee { private Long id; private String name; /** * GETs and SETs */ }
En el ejemplo vemos una clase común y corriente la cual representa a un Empleado (Employee), hasta este momento la clase Employee, no se puede considerar una Entity, pues a un no tiene la anotación @Entity que la señale como tal. Ahora bien, si a esta misma clase le agregamos la anotación @Entity le estaremos diciendo a JPA que esta clase es una Entidad y deberá ser administrada por EntityManager, veamos el siguiente ejemplo:
package com.obb.jpa.jpaturorial.entity; import java.util.Calendar; /** * * @author Oscar Blancarte */ @Entity public class Employee { private Long id; private String name; /** * GETs and SETs */ }
En este punto la clase ya se puede considerar una Entidad, pero faltaría un paso más para que JPA cargue esta clase como Entidad. Todas las clases entidades que vamos a utilizar en nuestro proyecto deben de estar contenidas en la unidad de persistencia (PersistenceUnit) que definimos en el archivo persistence.xml, por lo cual tendremos que retornar a este archivo y agregar la clase la clase, para esto nos ubicaremos en la pestaña de Design y presionaremos el boton Add Class, esto nos mostrara un pequeño dialogo con todas las entidades de nuestro proyecto, seleccionamos la clase Employee y presionamos OK, al terminar la pantalla se deberá ver de la siguiente manera:
Cabe mencionar que este procedimiento lo debemos repetir por cada nueva Entidad que agreguemos a nuestro proyecto, de lo contrario el EntityManager nos dirá que no existe la Entidad. Si el hecho de tener que registrar cada entidad se te hace molesto o repetitivo, puedes seleccionar la opción Include All Entity Classes in “JPATutorial” Module que se encuentra en el mismo persistence.xml, esto hará que todas las entidades marcadas como @Entity sean automáticamente manejadas por el EntityManager sin la necesidad de tener que agregar manualmente cada Entity que vamos creando. En lo particular suelo seleccionar la opción para evitar tener que registrarlas.
Un aspecto importante cuando definimos entidades es si deberemos implementar la interface serializable. En general las opiniones esta divididas, algunos dicen siempre deberán implementarla y otros dicen que no siempre, la realidad es que la interface serializable solo es necesario cuando los objetos son transmitidos fuera de nuestra máquina virtual, como sería el caso del uso de interfaces remotas de EJB, pero por lo general no será necesario implementarla.
Tambíen los quiero invitar a ver mi curso de JPA, donde explico todos estos temas aplicados con API REST, https://codmind.com/courses/jpa
Ya con esta breve explicación ya podemos entender el concepto básico de las entidades, pero falta relacionar la clase con la tabla de la base de datos, y es precisamente lo que veremos en la siguiente sección del tutorial.
NOTA: Este artículo es solo una sección del Tutorial de JPA, para ver el contenido completo de este tutorial regresa al Índice en el botón de abajo.
AnteriorÍndiceSiguiente
Está genial el tutorial. Gracias.
Gracias por el comentario Pedro 🙂
Muy bien explicado para sentar bases y entender mejor
Exacto, ese es el objetivo 🙂
pero si utilizas eclipselink netbeans como seria porque tengo problemas con los entity manager y persistencia init
Como sería que?
Excelente tutorial. Muy buen trabajo y explicado muy didacticamente.
Gracias por el comentario.
saludos,
Hola que tal. Tengo el siguiente problema: ya cree las clases Entity pero cuando le doy a “Add Class” en la unidad de persistencia no me aparece ninguna clase para añadir
si no te sale en la lista podrías agregarlos simplemente desde el XML
Muy bueno el tutorial, pero como sería para una vista?
Una César, una vista es básicamente una Tabla pero inmutable, por lo que puedes definirla como una Entidad más con @Entity.
Oscar, muchas gracias por el tutorial.
Saludos.