lunes, 5 de agosto de 2013

Entity Bean

Un Entity Bean es una clase ( POJO ) que representa una tabla de una base de datos, y cada instancia de esta clase representa un registro de la tabla, es decir, con los entity beans lo que se consigue es crear un mapeo entre las propiedades de una clase y los campos de una tabla. Además de este mapeo también se puede especificar las relaciones que tienen las clases entre sí ( uno a uno, uno a muchos, muchos a uno y muchos a muchos ). Todo Entity Bean debe de tener una clave primaria que identifica a ese registro de forma única dentro de la tabla. Todas estas configuraciones se realizan a través de anotaciones, y el API que se encarga de gestionar todos los aspectos relativos a la persistencia es JPA ( Java Persistent API).
Las entidades al ser manejadas por el EntityManager tienen un estado persistente pero al desconectarse del EntityManager las entidades al ser POJOs pueden ser utilizadas como cualquier otra clase Java.
A continuación se muestra el ciclo de vida de una entity.


  • Cuando se crea una instancia de la entity Libro con el operador new lo que se crea es un objeto que "existe en memoria" y de momento JPA no sabe del objeto en cuestión por lo cual es un objeto como cualquier otro.
  • Cuando es manejado por el EntityManager su estado es mapeado (asignado) y sincronizado con la BD, para este ejemplo con una tabla de nombre Libro.
  • Si se llama al método EntityManager.remove() se borran los datos de la BD y el objeto continua "existiendo en la memoria" hasta que sea recolectado como basura
 Las operaciones que pueden llevar a cabo las entity son las siguientes.


Cada una de las operaciones a excepción de loading tienen un evento pre y post, con esto el EntityManager puede interceptar estos eventos he invocar algún método en particular de la aplicación. La declaración de cada uno de estos eventos es la siguiente.
  • @PrePersist
  • @PostPersist
  • @PostLoad
  • @PreUpdate
  • @PostUpdate
  • @PreRemove
  • @PostRemove
Estas anotaciones pueden ser configuradas como métodos entity (callback) y clases externas (listeners) muy parecidas en funcionamiento a los trigger de BD.


No hay comentarios:

Publicar un comentario