Pregunta

Estoy desarrollando un cliente-servidor-aplicación con Hibernate como capa de persistencia y Jersey REST para la comunicación de red.

Dado un usuario con papeles:

  1. cuando quiero mostrar todos los usuarios en el cliente, no quiero los papeles para ser cargado por Hibernate y no quiero que se envían a través de la red
  2. cuando quiero modificar los roles del usuario, quiero que ser cargados y que se transferirán

Estoy usando un patrón de precarga ( http: // bwinterberg .blogspot.com / 2009/09 / hibernación-precarga-pattern.html ), para determinar las propiedades que se deben cargar por Hibernate. Esto funciona bien.

En el caso 1, no hay papeles se cargan por Hibernate, justo como se pretende. Pero tan pronto como Jersey crea el XML para ser enviada al cliente, lee los roles del usuario, que a su vez le permite cargar Hibernate los papeles (y todas las otras propiedades). Al final, Hibernate siempre carga el árbol completo de conjuntos de datos que pertenecen a un usuario.

pensé en separar el usuario al cerrar la sesión antes de pasar al usuario Jersey, de modo de hibernación no puede cargar los papeles, pero eso no parece tener ningún efecto.

¿Alguna idea?

¿Fue útil?

Solución

  • hacer un clon superficial de su entidad y establecer una colección vacía a la misma, antes de dárselo para la serialización

  • hacer un proxy personalizado de la colección con proxy, y delegar la carga sólo en algunas circunstancias (el primer caso de uso), y devolver una colección vacía en otro

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top