2010-02-15 21 views
6

Estoy usando DataNucleus como una implementación de JPA para almacenar mis clases en mi aplicación web. Yo uso un conjunto de convertidores que tienen toDTO() y fromDTO().Conversión de entidad a DTO con JPA

Mi problema es que quiero evitar a toda la base de datos que se envían a través del cable:

  • Si la carga perezosa, el convertidor a tratar de acceder a todos los campos, y cargar a continuación (que resulta en muy carga ansiosa).
  • Si no cargo la carga, obtendré una gran parte de la base de datos, ya que el usuario contiene grupos, y los grupos contienen usuarios, y así sucesivamente.

¿Hay alguna manera de cargar explícitamente algunos campos y dejar los otros como NULL en mi clase cargada? He probado los documentos de DataNucleus sin suerte.

Respuesta

3

Sus DTO son probablemente demasiado finos. es decir, no planee tener un DTO por entidad JPA. Si tiene que usar DTO, hágalos de grano más grueso y contrólelos manualmente.

Recientemente hemos tenido la discusión entera de "DTO o no a DTO, esa es la pregunta" OTRA VEZ. El requisito para ellos (especialmente en el contexto de una aplicación JPA) a menudo ya no está allí, pero uno de los argumentos PARA DTO tiende a ser que la vista tiene requisitos de datos más bastos.

+0

¿Quiere decir que un conjunto de DTO debe ser utilizado por cada vista? ¿Como un usuario sin campo de "grupos" para enviar para ver que no necesita conocer los grupos del usuario, y así sucesivamente? – WhyNotHugo

+1

Realmente depende de su aplicación y de cómo la esté diseñando. Usted habla de que es una aplicación web, pero al mismo tiempo le preocupan las cosas que se envían por cable. Que cable? ¿El cable entre el servidor de aplicaciones y la base de datos o el cable lógico entre la vista y la capa de modelo/controlador, o el cable entre una llamada AJAX del navegador y el servidor? –

+1

Principalmente, el cable entre el navegador y el servidor, pero también me gustaría reducir los datos del servidor de Java DB <-> que también se transfieren ... Supongo que la carga lenta y el uso de un dto por vista funciona, ya que al convertir el modelo a , No cargaré de forma accidental datos innecesarios, y solo enviaré lo que necesite la vista. Es más trabajo (muchas más clases) pero no veo otra opción. Gracias. – WhyNotHugo

Cuestiones relacionadas