2012-07-04 16 views
18

En mi proyecto de desarrollo, estoy usando JPA (hibernación) como tecnología de mapeo O para el acceso a la base de datos. A veces me toco problemas de rendimiento y dificultades técnicas cuando marco la tabla de DB a las entidades directamente para una relación compleja.Asignación de la vista SQL a la entidad JPA

Encuentro que una solución es mapear la vista de la base de datos a las entidades JPA. Esto hace que la codificación sea más fácil y, a veces, el rendimiento es mejor. ¿Crees que es un anti patrón de usar JPA de esta manera?

+0

No, no lo es. ¿Por qué? –

+1

Lo que sea que funcione mejor para usted, obviamente, no es un "antipatrón". Sabes lo que funciona mejor tter for you ... – DataNucleus

Respuesta

12

Esto no es una solución y no es un anti-patrón. Hay un tema en mapping JPA Entities to SQL Views. Le da suficiente información sobre si usar este método o no.

Personalmente, prefiero las clases de Java, y por lo tanto uso Result Classes Constructor Expression. Instala y rellena objetos de la clase proporcionada en función de la devolución de la consulta de resultados.

Puede ver estos dos métodos, lo que aumenta el rendimiento y reduce la complejidad de la estructura.

+2

También prefiero mapear el resultado con una clase de resultado, pero tengo algunas dudas sobre el enfoque de entidad personalizada. De acuerdo con la especificación, las entidades JPA deben tener un campo '@ Id'; sin embargo, puede tener una vista con registros duplicados. ¿Cómo manejas esa situación? –

+0

Esa es una buena pregunta.¿Crees que sería útil crear una columna hash a partir de varias columnas de la vista? Podría actuar como la clave principal. – JMelnik

+0

@JMelnik Yo también me encantaría lograr con las clases de Java. Tengo una pregunta sobre las expresiones de constructor y mi pregunta es si se usan expresiones de constructor, ¿cómo se usa el atributo ORDER BY? Ver por ejemplo [this] (http://stackoverflow.com/questions/33852430/jpql-not-a-selected-expression-error) donde tengo una consulta compleja y no puedo hacer el comando ORDER BY – user75ponic

0

Tuve un problema con el enlace JMelnik proporcionado amablemente: Creé la consulta compleja como una Vista en Javadb, luego intenté arrastrar la vista al formulario, pero Netbeans no me permitió soltarla (por lo tanto, pude no autocreate la mesa con destino vi en ese enlace que no soy el único que experimenta este

solución que funcionó para mí:..

CREATE VIEW en dB, para su complejo con SQL une

"Crear entidad desde la base de datos" en el paquete de entidades, y asígnele el nombre xxxViewName

  • Asegúrese de que un campo de la entidad se identifique como clave, agregando "@Id" encima.

Crear java consulta persistencia en el Navegador:

  • Asegurarse de diseño de formularios es visible, a continuación, haga clic derecho en "Otros componentes" en el Navegador y seleccione Agregar desde Paleta> Java Persistence> Consulta

  • Configure la consulta: NO use el habitual "show xxxViewName" (que falla porque JPA no es compatible con show). Utilice Seleccionar w de xxxViewName w"

Crear java lista de resultados de la persistencia en el Navegador:

  • Similar a crear la consulta Asegúrese de ajustar parámetros de tipo de lista a

Enlazar. su JTable a la lista.

Cuestiones relacionadas