Segunda parte
Persistencia de datos con
Spring Data JPA
¿Qué es JPA?
Java Persistence API (JPA) es una especificación de Java EE que permite a los desarrolladores Java
hacer un mapeo entre los objetos y las tablas de una base de datos (Object Relational Mapping) para
facilitar la administración de los datos relacionales en las aplicaciones.
OBJECT RELATIONAL
MAPPING
¿Qué es Spring Data JPA? (1)
Spring Data JPA es un módulo que forma parte del proyecto Spring Data y
básicamente nos ayuda a simplificar el desarrollo de la persistencia de datos
utilizando el concepto de repositorios (algo similar al patrón de diseño DAO Data
Access Object).
En términos sencillos este módulo de Spring Data agrega una capa de abstracción al
API de JPA (podríamos decir es una forma más sencilla y mejorada de trabajar con
JPA).
Beneficios de Spring Data JPA
Desarrollo ágil de la capa de persistencia de datos utilizando bases de datos relacionales.
No es necesario escribir código SQL nativo (aunque también es posible).
Más fácil que JDBC.
Permite al desarrollador enfocarse más en la lógica de negocio de la aplicación y olvidarse del
manejo de Excepciones (menos excepciones SQLException).
Código más fácil de entender y mantener.
¿Qué es Spring Data JPA? (2)
Ejemplo de persistencia de datos
// 1. Crear objeto a guardar en la BD
Pelicula pelicula = new Pelicula();
[Link](5);
[Link]("Power Rangers");
[Link](120);
[Link]("B");
[Link]("Aventura");
[Link]("[Link]")
[Link](new Date());
[Link]("Activa")
// 2. Persistir (guardar) objeto en la BD
[Link](pelicula);
3. Se genera todo el código SQL de forma automática y se
ejecuta en la base de datos.
Configuración de Spring Data JPA (1)
Procedimiento general para configurar Spring Data JPA:
1. Descargar dependencias.
2. Configuración de los beans: dataSource, transaction manager y entity manager factory.
3. Configuración de Spring Data JPA (Repositorios).
Archivo [Link]
<dependency>
<groupId>[Link]</groupId> [Link]
<artifactId>spring-data-jpa</artifactId> 1
<version>[Link]</version>
</dependency>
<dependency>
<groupId>[Link]</groupId>
<artifactId>hibernate-core</artifactId> 2 [Link]
<version>[Link]</version>
</dependency>
<dependency>
<groupId>[Link]</groupId>
<artifactId>hibernate-validator</artifactId> 3 [Link]
<version>[Link]</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.48</version>
4 [Link]
</dependency>
Configuración de Spring Data JPA (2)
Agregar los namespaces spring-jpa y spring-tx (JPA y manejo de transacciones).
Agregar las siguientes declaraciones en el archivo XML ([Link]) para habilitar Spring Data JPA.
<jpa:repositories base-package="[Link]" /> 1
<bean id="dataSource" class="[Link]"> 2
<property name="driverClassName" value="[Link]" />
<property name="url" value="jdbc:mysql://localhost:3306/cineapp?useSSL=false" />
<property name="username" value="root" />
<property name="password" value="admin" />
</bean>
<bean id="jpaVendorAdapter" class="[Link]"> 3
<property name="generateDdl" value="false" />
<property name="showSql" value="true"></property>
<property name="databasePlatform" value="[Link].MySQL5Dialect" />
</bean>
<bean id="entityManagerFactory" class="[Link]">
<property name="packagesToScan" value="[Link]" />
4
<property name="dataSource" ref="dataSource" />
<property name="jpaVendorAdapter" ref="jpaVendorAdapter" />
</bean>
<bean id="transactionManager" class="[Link]"> 5
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
Estructura de la base de datos - cineapp