Saltar la navegación

Arquitectura EntityManager

Concepto

  • Para iniciar JPA, se requiere el paquete javax.persistence y todos sus "imports" (javax.persistence.*)
  • Persistence. La clase Persistence contiene métodos estáticos para obtener una instancia de EntityManagerFactory.
  • EntityManagerFactory. Nos ayuda a crear objetos de EntityManager utilizando el patrón de diseño Factory.
  • EntityManager. Es la interfaz principal de JPA; utilizada para la persistencia de las aplicaciones. Esta clase es la encargada de gestionar las entidades, es decir los objetos persistentes, a través de operaciones CRUD (create, read, update y delete).
    • Normalmente, una entidad es una tabla.
    • Cada instancia que creamos del gestor se asocia a un contexto de persistencia diferente.
  • Entity. Es una anotación Java que se coloca a nivel de las clases Java serializables y que cada objeto (instancia) de una de estas clases anotadas representa un registro de una base de datos.
  • EntityTransaction. Permite operaciones sobre datos persistentes de manera que agrupados formen una unidad de trabajo transaccional, en el que todo el grupo sincroniza su estado de persistencia en la base de datos o todos fallan en el intento. En caso de fallo, la base quedará en su estado original.
  • Query. Gestiona las consultas. Estandariza las consultas mediante el lenguaje JPQL y SQL. Se puede obtener una instancia de Query a partir de un Entity Manager.
  • Criteria API. Es un metamodelo de Java para la creación de JPQL. Facilita la comprobación y la generalización

Operaciones soportadas

A través del EntityManager se pueden realizar las siguientes operaciones.

OPERACIÓN DESCRIPCIÓN CORRESPONDENCIA CON CRUD SQL
Persist
  • Persiste en la BD un objeto entidad(@Entity ).
  • Persiste, también, todos los objetos relacionados, cuya relación haya sido anotada con CascadeType.PERSIST o CascadeType.ALL.
  • El objeto pasa al estado Managed.
INSERT
Find
  • Busca un objeto en la BD.
  • Después de ejecutar esta operación, el objeto queda en estado Managed.
SELECT * FROM A WHERE A.id = ?
Remove
  • Se borra el objeto de la BD (debe estar en estado Managed).
  • Después de realizar esta operación, el objeto queda en estado Removed.
  • Se borran los objetos relacionados con la anotación: CascadeType.REMOVE o CascadeType.ALL
DELETE
Merge
  • Actualiza el objeto en la BD.
  • Al terminar la transacción, se ejecuta una sentencia UPDATE en SQL.
  • El objeto no debe estar en estado Removed.
  • Después de ejecutar esta operación, el objeto queda en estado Managed.
  • Se actualizan los objetos relacionados con la anotación: CascadeType.MERGE o CascadeType.ALL
UPDATE
Refresh
  • Actualiza el objeto obteniendo los valores de sus atributos y relaciones de la BD.
  • Se ejecuta una sentencia SELECT en SQL.
  • Después de ejecutar esta operación, el objeto queda en estado Managed.
  • Se actualizan los objetos relacionados con la anotación: CascadeType.REFRESH o CascadeType.ALL
SELECT (para actualización de objeto)
Flush
  • Sincroniza BD con el contexto de persistencia, es decir, actualiza los cambios realizados en el contexto en la BD
UPDATE, INSERT (para sincronización con la BDD)