Buenas prácticas en las consultas con JPA

LIBP-0047 (Libro de pautas)

Se deben tener en cuenta las las siguientes pautas para mejorar la eficiencia y el rendimiento de las consultas dentro de la especificación JPA.

Pautas

TítuloCarácter
Campos BFILE con JPANo Recomendada
Consultas con nombreRecomendada
Parámetros en las consultasObligatoria
Nombres para las consultasRecomendada
Gestores de entidades fuera de transaccionesObligatoria
Consultas con propiedades individualesRecomendada
Beans de sesión sin estadoObligatoria
Actualizaciones y borrados masivosObligatoria

Campos BFILE con JPA

No usar campos BFILE con JPA

No se recomienda el uso de campos BFILE de Oracle en JPA ya que no existe actualmente ningún motor de persistencia capaz de mapear este tipo. En caso de ser necesario, utilizar JDBC para obtener dichos campos

Consultas con nombre

Utilizar las consultas con nombre siempre que sea posible

Se recomienda utilizar las consultas con nombre para evitar la sobrecarga en el análisis y la generación del SQL. Además, es más eficiente que el uso de consultas dinámicas y hace cumplir las mejores prácticas de la utilización de parámetros de consulta.

Parámetros en las consultas

Utilizar parámetros en las consultas

Se recomienda el uso de los parámetros de consulta para garantizar el rendimiento óptimo de la base de datos, minimizando el número de SQL analizadas por ésta. Además, ayudan a evitar problemas de seguridad causados por la concatenación de los valores en cadenas de consulta.

Nombres para las consultas

Establecer un nombre para la consulta

Para evitar colisiones entre los nombres de las consultas se recomienda anteponer al nombre de la consulta el nombre de la entidad que se devuelve separado por un punto.

Gestores de entidades fuera de transacciones

Usar gestores de entidades fuera de transacciones para las consultas si los datos no serán modificados

Las sentencias que devuelven entidades que no van a ser modificadas deben ejecutarse utilizando un gestor de entidades (EntityManager) fuera de una transacción.

Consultas con propiedades individuales

Seleccionar propiedades individuales en consultas o tablas complejas

Se recomienda seleccionar propiedades individuales de las entidades que utiliza una consulta, en lugar de recuperar toda la entidad, cuando las relaciones entre las entidades o las tablas son complejas.

Beans de sesión sin estado

Utilizar beans de sesión sin estado para mejorar la eficiencia

Se deben utilizar beans de sesión sin estado para mejorar la eficiencia del uso de la memoria y los recursos en el servidor, ya que estos componentes pueden ser compartidos entre varios clientes y no requieren mantener un estado entre las diferentes invocaciones y son creados y destruidos por el contenedor.

Actualizaciones y borrados masivos

Establecer un nombre para la consulta.

Para evitar colisiones entre los nombres de las consultas se recomienda anteponer al nombre de la consulta el nombre de la entidad que se devuelve separado por un punto.