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.

Ciclo de vida de las Entidades
Ciclo de vida de las Entidades

Cabe mencionar que el Persistence Context no es un objeto con el cual nosotros interactuaremos, ya que este esta encapsulado dentro de Entity Manager y solo a trav茅s de este es posible afectarlo. En la siguiente secci贸n hablaremos de las operaciones que ofrece el Entity Manager y con las cuales es posible afectar a Unidad de persistencia y las entidades.

Estados de las entidades:

A medida que trabajamos con las entidades, estas van cambiando de estado, y el estado de estas ser谩 utilizado para realizar operaciones en la base de datos. Un aspecto importante cuando utilizamos JPA es que ya no estamos trabajando con sentencias SQL y en su lugar trabajamos con las Entidades y sus estados. Las entidades en JPA puedan pasar por cuatro estados distintos que se pueden ver en la siguiente imagen:

Ciclo de vida de las Entidades
Estados de las Entidades

Los cuatro estados son:

  • New: Estado que tiene una entidad cuando es creada con el operador new, por lo tanto, no existe en la base de datos y no est谩 asociada a un contexto de persistencia. Todas las entidades en estado new no ser谩n afectadas en la base de datos cuando la transacci贸n finalice, pues no est谩 asociado a al Context Persistence.
  • Manage: Todas las entidades que est谩n siendo administradas por JPA est谩n en estado manage, lo que indica que son parte de un contexto de persistencia. Aplica para entidades que ser谩n insertadas, actualizadas o fueron obtenidas por el EntityManager como parte de alguna operaci贸n SELECT.
  • Detached: Las entidades en estado detached, son entidades que si existen en la base de datos, pero por alg煤n motivo no son parte de un contexto de persistencia. Todas las entidades en este estatus no ser谩n afectadas en la base de datos, pues no pertenecen a un Persistence Context
  • Removed: Cuando una Entidad es marcada para ser eliminada, pasa autom谩ticamente al estado de Removed. Cando la transacci贸n finaliza, todas las Entidades en este status ser谩n eliminadas de la base de datos y ya no existir谩n m谩s en el Persistence Context.

En la siguiente secci贸n hablaremos de las operaciones b谩sicas que nos permite utilizar el EntityManager y con las cueles es posible mover de estados las entidades. Por lo pronto es importante entender los estados por lo que pueden pasar las entidades para que nos facilite entender las operaciones para buscar, persistir, actualizar y borrar de JPA.

Anterior脥ndiceSiguiente

Art铆culos relacionados

Definici贸n de columnas con @Column Una de las principales caracter铆sticas cuando trabajamos con base de datos es que todas las tablas tienen Columnas, y dichas columnas esta mapeadas co...
Declarar entidades con @Entity 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 cua...
Llaves compuestas con @IdClass Existen ocasiones en donde se requieres marcar m谩s de un campo como @Id, conformando con esto una llave primar铆a compuesta. En estos casos se requiere...

Oscar Blancarte

Ideol贸gico, Innovador y emprendedor, Padre, Tecn贸logo y Autor, amante de la ciencia y la tecnolog铆a en todos sus colores y sabores. Arquitecto de software & Full Stack Developer con experiencia en la industria del desarrollo de software y la consultor铆a. Amante de la programaci贸n y el Ajedrez.

Deja un comentario

Tu direcci贸n de correo electr贸nico no ser谩 publicada. Los campos obligatorios est谩n marcados con *