# JPA Avanzado Trabajando sobre el [proyecto](./jpa/tienda/src/main/java/com/latam/alura/tienda/) anterior ```mermaid erDiagram Categorias ||--o{ Productos : tiene Productos { id bigint PK nombre varchar descripcion varchar precio decimal categoria_id bigint FK } Categorias { id biging PK nombre string } Clientes ||--|{ Pedidos : tiene Clientes { id bigint PK nombre string dni string } Pedidos { id bigint PK fecha date valor_total decimal cliente_id bigint FK } Items_Pedido { id bigint PK producto_id biging FK pedido_id bigint FK precio_unitario decimal cantidad int } Pedidos ||--|{ Items_Pedido : tiene Items_Pedido }|--|| Productos: tiene ``` ## H2 Alias para manejar H2 ```bash alias h2server='java -cp ${HOME}/.m2/repository/com/h2database/h2/2.2.222/h2-2.2.222.jar org.h2.tools.Server -tcpAllowOthers -pgAllowOthers' alias h2console='java -jar ${HOME}/.m2/repository/com/h2database/h2/2.2.222/h2-2.2.222.jar' ``` - Creación de base de datos `h2console` ### H2 en modo servidor ```bash h2server TCP server running at tcp://127.0.1.1:9092 (others can connect) PG server running at pg://127.0.1.1:5435 (others can connect) Web Console server running at http://127.0.1.1:8082 (only local connections) ``` En [pom.xml](./jpa/tienda2/pom.xml) cambiar la `url` para usar base de datos creada anteriormente ```xml ... ... ... ... ``` #### Sumario Aula 1 - Mapeo de nuevas entidades en la aplicación según el modelado de la base de datos - Mapeo de relación con cardinalidad de muchos a muchos - Mapeo de relación bidireccional - Persistencia entidades que tienen relaciones bidireccionales ### Funciones de agregación SQL | Función | Descripción | | - | - | | **AVG** | Calcula el promedio de los valores de un campo | | **COUNT** | Devuelve en número de registros de la selección | | **SUM** | Devuelve la suma de todos los valores de un campo | | **MAX** | Devuelve el valor más alto de un campo | | **MIN** | Devuelve el valor más bajo de un campo | #### Reporte de ventas | PRODUCTO | CANT. VENDIDA | ULTIMA VENTA | | - | :-: | - | | Celular Motorola X9 | 240 | 01/02/23 | | Xbox Series S | 198 | 10/02/23 | | Framework Laptop | 71 | 20/02/2023 |
**NamedQuerys**: Estas se declaran en la clase de entidad. #### Sumario Aula 2 - Realización de consultas utilizando funciones de agregación (**min, max, avg y sum**) - Consultas de reporte/informes usando JPQL - Uso del nuevo recurso seleccionado en consultas JPQL - Consultas mediante **NamedQuerys**