Los parámetros de configuración de Spring Boot y las librerías compatibles se definen en el fichero /src/main/resources/application.properties (o application.yml para los que prefieran el formato YAML). Los disponibles se detallan en esta página.
Seguir leyendoCurso Jakarta EE 9 (39). JPA con Hibernate (22): Procedimientos almacenados SQL

Los procedimientos almacenados (stored procedures) suelen ser ignorados por los programadores no especialistas en bases de datos. Pero son una herramienta con un ámbito de aplicación más que interesante y que podemos usar fácilmente con JPA sin tener que recurrir a la API JDBC. Por ello, los vemos en este pequeño capítulo que complementa el estudio del empleo de SQL con JPA e Hibernate.
Seguir leyendoCurso Jakarta EE 9 (38). JPA con Hibernate (21): trabajando con SQL

Idealmente, las consultas en JPA se escriben con JPQL \ Criteria API utilizando el modelo de entidades para que sean agnósticas con respecto a la base de datos. No obstante, contamos con un magnífico soporte para la ejecución de consultas SQL, denominadas «nativas» en la especificación. ¿Por qué querríamos recurrir a él? Ya apunté algunos motivos en la introducción a los capítulos dedicados a JPA.
Seguir leyendoCurso Jakarta EE 9 (37). JPA con Hibernate (20): Criteria API (2). Funciones y WHERE. Modificaciones.

Completamos el estudio de los fundamentos de Criteria API con la descripción de las funciones y del bloque WHERE, incluyendo los operadores existentes y la posibilidad de efectuar subconsultas. También habrá una pequeña sección dedicada a las actualizaciones y eliminaciones.
Seguir leyendoCurso Jakarta EE 9 (36). JPA con Hibernate (19): Criteria API (1). Consultas básicas.

Las consultas JPQL son simples cadenas de texto fáciles de escribir y comprender debido a sus similitudes con el lenguaje SQL. La alternativa dentro de Jakarta Persistence para explotar los datos con el modelo de entidades es la API Criteria. Permite construir consultas de forma programática, esto es, en código Java, y con un tipado absoluto tanto de los parámetros como de los resultados. Lo hace ofreciendo métodos que equivalen a las cláusulas, operadores y funciones de JPQL.
Seguir leyendoCurso Jakarta EE 9 (35). JPA con Hibernate (18): el lenguaje JPQL\HQL (3). Funciones.

Completemos la revisión de JPQL examinando sus funciones y cómo podemos sacar partido a las nativas que ofrecen las bases de datos. No está de más subrayar que, por cuestiones de rendimiento, es preferible delegar en la base de datos todo el procesamiento y cálculo que pueda realizar, en lugar de implementarlo nosotros en el código.
Seguir leyendoCurso Jakarta EE 9 (34). JPA con Hibernate (17): el lenguaje JPQL\HQL (2). Reuniones.

Hasta ahora, nos hemos conformado con usar una única entidad en el FROM de las consultas JPQL. Para combinar datos de varias necesitamos hacer una reunión o join entre ellas, tal y como haríamos con tablas en una consulta SQL. En este capítulo examinamos los distintos tipos de reuniones disponibles.
Seguir leyendoCurso Jakarta EE 9 (33). JPA con Hibernate (16): trabajando con JPQL\HQL (2). Proyecciones y paginación.

Con los conocimientos del capítulo anterior, estamos limitados a consultas que devuelvan un único tipo de entidad o de valor escalar, pese a que ya vimos que JPQL es flexible en este aspecto. Tampoco dimos solución a la recuperación de listados grandes. Dos asuntos de vital importancia en nuestro día a día con JPA que examinamos en detalle en este capítulo.
Seguir leyendoCurso Jakarta EE 9 (32). JPA con Hibernate (15): trabajando con JPQL \ HQL (1)

Recién vistos los fundamentos del lenguaje de consultas JPQL, y antes de seguir profundizando, veamos cómo materializar las consultas, simples cadenas de texto, en código Java que las ejecute.
Seguir leyendoCurso Jakarta EE 9 (31). JPA con Hibernate (14): el lenguaje JPQL\HQL (1). Consultas básicas y modificaciones.

El gestor de entidades permite recuperar las entidades que conforman el modelo de datos, incluyendo relaciones entre ellas, gracias a las funciones de carga perezosa e inmediata. Pero no es suficiente. En cualquier aplicación de gestión necesitaremos explotar la información almacenada en la base de datos realizando filtros más o menos complejos, comprobando relaciones, efectuando cálculos… En definitiva, son imprescindibles las posibilidades que nos brinda el lenguaje SQL.
Seguir leyendoCurso Jakarta EE 9 (30). JPA con Hibernate (13): clases DAO

Antes de proseguir con el estudio de las consultas JPQL, hagamos un pequeño paréntesis para ver cómo estructurar de forma práctica y sencilla el código relacionado con la persistencia.
Seguir leyendoCurso Jakarta EE 9 (29). JPA con Hibernate (12): Relaciones especiales

Hemos examinado las posibles relaciones entre entidades que podemos establecer, así como su configuración (modo de carga y operaciones en cascada). No obstante, se han quedado en el tintero algunas configuraciones alternativas a las relaciones, de uso poco habitual, pero muy interesantes. Revisaremos tres de ellas en este pequeño capítulo.
Seguir leyendo