Framework Spring

Intro

Patrón MVC

El controlador

El modelo de datos

Es un conjunto de clases que representan al dominio del sistema, y tienen una capa de comportamiento que resuelven la lógica de negocio
"Incluye clases de dominio con métodos del negocio"

Las vistas

Componentes responsables de generar el contenido que se va a mostrar al usuario final (ya sea HTML, JSON u otro formato)

Patrón MVC en Spring Web

Hay muchas clases que no explicamos porque las trae resultas Spring y son más bien técnicas. Lo que implementamos nosotros es el Controlador (Front controller), Vistas y Modelo

Dominio

Persistencia

Mapeo Objeto-Relacional

Es una estrategia para traducir entre objetos de un modelo de POO y registros de una base de datos relacional.
Existen varias estrategias de mapeo

DAO

a.k.a. Repositorio
Es un patrón de arquitectura para resolver el problema de acceso a base de datos

Implementación de patrón DAO en Spring

Anotaciones y configuración de persistencia

JPQL (Java Persistence Query Language)

Puede verse como una versión orientada a objetos del SQL.
Las consultas se hacen sobre clases y sus atributos (en lugar de sobre tablas y sus campos).
El motor de persistencia de JPA se encarga de traducir JPQL a SQL

Consultas

Las cláusulas [entre corchetes] son opcionales

SELECT alias
FROM entidad alias
[JOIN entidad.otroCampo aliasCampo]
[WHERE ...]
[
	[GROUP BY ...]
	[HAVING ...]
]
[ORDER BY ...]

Inner Join

Ejemplo

SELECT c
FROM Cliente c
JOIN c.localidad loc
WHERE loc.codPostal > 1000

Left join

ON

Joins implícitos

Actualizaciones

DELETE FROM ...
[WHERE ...]
UPDATE ...
SET ...
[WHERE ...]

Proyección

Implementación en Java

public interface ClienteDao extends JpaRepository<Cliente, Long> {

	@Query("SELECT c FROM Cliente c WHERE c.localidad = ?1")
	public Collection<Cliente> buscarClientesPorLocalidad(Localidad l);
	
	@Query("SELECT c FROM Cliente c WHERE c.name LIKE '%?1%'")
	public Collection<Cliente> buscarClientesPorNombre(String nombre);
}

Principios SOLID