Cómo crear un EntityManager en persistencia para que cumpla la ley de protección de datos LPD

EntityManager es la clase que pilota toda la persistencia. Para más detalles pregunta a google!!

En este capítulo voy a explicar como crear tu propio EntityManager para que cumpla la LPD…. sin tener que arrastrarlo a todos! Esta es una solución… aunque puede que no sea la mejor!  Se agradece cualquier comentario comentando otras soluciones.


QUÉ QUEREMOS CONSEGUIR

  • Evitar tener que registrar todas las veces que utilizamos persistencia con cualquier objeto la actualización de los campos de las tablas de la base de datos: «creado_por» , «modificado_por» o «borrado_por» junto a las fechas correspondientes «fecha_creacion», «fecha_borrado», «fecha_modificacion».

CÓMO LO HACEMOS

  • Crearemos nuestra nueva clase que extiende de EntityManager

public class EntityManagerWrapper implements EntityManager {

private EntityManager entityManager = null;

  • Ahora tendremos que implementar y sobrescribir todos los métodos menos «persist» y «delete»
  1. Los que sobrescribimos quedarán del estilo:

@Override
public <T> T merge(T t) {
return this.entityManager.merge(t);
}

  1. Persist quedará:
@Override
public void persist(Object o) {
try{
//seteando traza de usuario
User user = (User)ApplicationContext.getInstance().getFromSession("user");
Method method = o.getClass().getMethod("getCreatedBy", (Class&lt;?&gt;[]) null);
Object createdBy = method.invoke(o, (Object[]) null);
if(createdBy == null){
method = o.getClass().getMethod("setCreatedBy", new Class[]{ Integer.class });
method.invoke(o, new Object[]{ user.getUserId() });
method = o.getClass().getMethod("setCreationDate", new Class[]{ Date.class });
method.invoke(o, new Object[]{ new Date() });
}
method = o.getClass().getMethod("setModifiedBy", new Class[]{ Integer.class });
method.invoke(o, new Object[]{ user.getUserId() });
method = o.getClass().getMethod("setModificationDate", new Class[]{ Date.class });
method.invoke(o, new Object[]{ new Date() });

} catch (Exception ex) {
//ErrorManager.showExceptionDialog(ex);
}

this.entityManager.persist(o);
lastEntity = o;
}
<ol>
	<li>Delete nos quedará</li>
</ol>
public void delete(Object o) {
try {

//seteando traza de usuario
User user = (User)ApplicationContext.getInstance().getFromSession("user");
Method method = o.getClass().getMethod("setDeletedBy", new Class[]{ Integer.class });
method.invoke(o, new Object[]{ user.getUserId() });
method = o.getClass().getMethod("setDeletedDate", new Class[]{ Date.class });
method.invoke(o, new Object[]{ new Date() });

} catch (Exception ex) {
ErrorManager.showExceptionDialog(ex);
}

this.entityManager.persist(o);
lastEntity = o;
}

SUERTE!!! 

Anuncio publicitario

Deja una respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.