Implementaré una función para actualizar una identificación en una tabla después de Hibernate hace mis eliminaciones. Pero quiero obtener algunos comentarios sobre qué enfoque es mejor. También la tabla en la que estoy actualizando el valor, Hibernate no lo sabe, así que tendría que hacer una actualización directa de jdbc, ¿es posible?Hibernate: Event Listener or Interceptor, ¿cuáles son los pros/contra en la práctica?
Respuesta
En cuanto al uso de listener/interceptor, iría con listener, es más flexible en términos de eventos que se pueden escuchar. El objetivo principal del interceptor es inspeccionar/alterar las propiedades del objeto anterior a algún evento (por ejemplo, eliminación); mientras que el oyente se puede configurar para escuchar el evento "PostDelete" o many others.
Sin embargo, si dicha tabla no está asignada, ¿por qué la necesita? En su lugar, puede actualizarlo directamente en su código después de haber llamado a delete() (o después de haber llamado a flush() si hay una clave foránea involucrada).
También puede hacerlo en un desencadenador (posiblemente, dependiendo de si la información necesaria está disponible en la base de datos, por supuesto).
Como sé, los interceptores son la antigua implementación del equipo de hibernación y los oyentes son la nueva versión flexible de los interceptores. Imho es un oyente de hibernación más fácil de usar como interceptores.
Parece que muchos prefieren los oyentes: ofrecen una lista más amplia de eventos y son más flexibles, pero hay cosas que los Interceptores ofrecen y los oyentes no.
Por ejemplo, si desea modificar la entidad antes de guardarla en la base de datos, se debe utilizar un Interceptor.
- 1. Android - event listener
- 2. Hibernate Interceptor/Listeners para HQL
- 3. android.widget.Switch - on/off event listener?
- 4. flash as3 check event listener
- 5. Javascript OpenLayers before zoom event listener
- 6. Seguridad de primavera: agregar "On successful event event listener"
- 7. Hibernate 4.0.0Final dónde está el sessionFactory.openSession (interceptor interceptor)
- 8. scala event swing :: chicken or egg
- 9. Make "scrollLeft"/"scrollTop" cambios no desencadenan scroll event listener
- 10. ¿Los diálogos modales son una buena práctica para la web?
- 11. ¿Cuáles son los beneficios de la sesión por conversación?
- 12. ¿Cuáles son los nuevos marcos?
- 13. ¿Cuáles son los contenedores en Java
- 14. ¿Cuáles son los alias en ldap
- 15. ¿Cuáles son los comandos destructivos en git?
- 16. ¿Cuáles son los beneficios de letrec?
- 17. ¿Cómo obtener la sesión de Hibernate dentro de un Interceptor Hibernate?
- 18. ¿Los argumentos NULL son una mala práctica?
- 19. Cuántas combinaciones son factibles en la práctica
- 20. ¿Los objetos inmutables son una buena práctica?
- 21. ¿Cuáles son los pros y los contras de la UCI?
- 22. onclick listener en android
- 23. Android: listener listener
- 24. ¿Cuáles son los números entre corchetes en la salida NSLog()?
- 25. ¿Cuáles son los conceptos básicos en la programación funcional?
- 26. ¿Cuáles son los usos prácticos del módulo (%) en la programación?
- 27. ¿Cuáles son los pasos en la detección de objetos?
- 28. ¿Cuáles son las dependencias de Maven para usar hibernate, hibernate annotations y ehcache?
- 29. XMLHttpRequest siempre llama a "load" event listener, incluso cuando la respuesta tiene un estado de error
- 30. ¿Utiliza anotaciones de primavera para aplicar automáticamente el interceptor Hibernate?
Well hibernate ve una vista y necesito pasar una identificación de sesión en la eliminación que no puedo pasar en la cláusula where. Entonces, cuando Hibernate elimina en la vista un disparador "en vez de", pero después de que esto se ejecute necesito una forma de pasar la identificación de la sesión para la persona que acaba de eliminar en la tabla base de la vista como una forma de auditoría. Pero este hibernate de la tabla base no sabe nada, entonces en @PostDelete ¿puedo hacer una inserción/actualización en una tabla no orm-ed? –
Lo intentaré venir lunes –
@PostDeleteEvent (pasado a su oyente) se extiende desde AbstractEvent (https://www.hibernate.org/hib_docs/v3/api/org/hibernate/event/AbstractEvent.html) que tiene una getSession() método. De modo que puede usar 'createSQLQuery()' o definir su SQL como consulta con nombre y usar 'getNamedQuery()', establecer los parámetros necesarios y ejecutarlo. No he probado esto en PostDeleteListener específicamente, pero no veo por qué no funcionaría. – ChssPly76