Relaci贸nes @ManyToMany

Las relaciones Mucho a Muchos (@ManyToMany) se caracter铆zan por Entidades que est谩n relacionadas con a muchos elementos de un tipo determinado, pero al mismo tiempo, estos 煤ltimos registros no son exclusivos de un registro en particular, si no que pueden ser parte de varios, por lo tanto, tenemos una Entidad A, la cual puede estar relacionada como muchos registros de la Entidad B, pero al mismo tiempo, la Entidad B puede pertenecer a varias instancias de la Entidad A.

(m谩s…)

Entity Manager & Persistence Context

Tutorial de JPA persistence.xmlHasta el momento solo hemos trabajado con el Entity Manager para realizar las operaciones b谩sicas, pero existen detalles m谩s finos que es necesario entender para convertirnos en expertos de JPA. Cuando trabajamos con JPA es com煤n interactuar con el Entity Manager, 驴pero que tanto sabemos acerca de los Persistence Context en realidad?

 

Primero que nada, tenemos que saber que el Persistence Context se crea mediante un Persistence Unit y el Entity Manager se crea a partir de un Persistence Context, veamos la siguiente imagen para entender mejor:

persistence context

 

Veamos que todo parte del archivo persistence.xml del cual ya hablamos anteriormente, en este archivo se definen los Persistence Unit, y mediante estos es creado el Persistence Context, el Persistence Context tiene la finalidad de delimitar el alcance de las transacciones, pero tambi茅n est谩 delimitado a administrar las Entidades definidas por el Persistence Unit con el que fue creado. 聽Adicionalmente, el Entity Manager hace referencia a un Persistence Context el cual ser谩 utilizado para administrar las entidades y las transacciones. (m谩s…)

Operaciones b谩sicas

Operaciones b谩sicasUna parte esencial de utilizar JPA es saber utilizar las operaciones b谩sicas, operaciones mediante las cuales es posible consultar, persistir, actualizar y eliminar entidades, de estas operaciones estaremos hablando hoy.

 

Gran parte de la funcionalidad de JPA es expuesta por medio de la Interface EntityManager, de la cual ya hemos hablado con anterioridad, y es por medio de esta interface, que es posible realizar las operaciones b谩sicas. Las operaciones o m茅todos que exponen EntityManager son persist, merge, remove, find entre otras, que son sin duda las operaciones que m谩s utilizaremos los proyectos.

En la secci贸n anterior de este tutorial, hablamos de los estados de las entidades, las cuales ser谩 clave para entender c贸mo y cu谩ndo deberemos utilizar dichas operaciones.

 

Sin m谩s, las operaciones se describen a continuaci贸n:

(m谩s…)

Ciclo de vida de las Entidades

Tutorial de JPA persistence.xml

Entender el ciclo de vida de las Entidades es sin duda uno de los puntos cruciales de JPA, pues entender c贸mo es que una Entidad es gestionada por EntityManager nos permitir谩 entender mejor como es que JPA funciona y prevenir muchos errores en tiempo de ejecuci贸n.

Lo primero que debemos de entender, es que todas entidades que utilicemos con JPA, ser谩n administradas por el EntityManager, es por este motivo que hemos agregado este esta secci贸n al cap铆tulo de EntityManager.

 

Persistence Context:

Antes de entrar a los estados de las Entidades es importante entender un nuevo concepto que no hemos analizados en esta gu铆a, se trata del Contexto de persistencia (Persistence Context), este lo podemos ver como contenedor en donde se encuentra todas las Entidades administradas por el EntityManager. Cuando un nuevo EntityManager es creado a trav茅s del EntityManagerFactory este le asigna un Unidad de persistencia. (m谩s…)

Atributos vol谩tiles con @Transient

Tutorial de JPA persistence.xmlLa anotaci贸n @Transient se utiliza para indicarle a JPA que un atributo de una Entidad no debe de ser persistente, de esta manera, JPA pasa por alto el atributo y no es tomado en cuenta a la hora de persistir el Objeto.

En la pr谩ctica no es com煤n utilizar esta anotaci贸n, debido a que las Entidades por lo general solo tiene los atributos que mapean con la base de datos. Sin embargo, existen ocasiones en donde puede ser 煤til. Un ejemplo muy habitual es cuando agregamos un logger a la clase entidad. Esta instancia de java.util.logging.Logger ser谩 una propiedad m谩s de la entidad, pero no deseamos que sea persistente, para lo cual lo marcamos con @Transient. Retomaremos la Entidad Employee que hemos utilizado en todo este tutorial para analizar c贸mo quedar铆a:

(m谩s…)