30.9 Desarrollo de API REST con Spring Boot: integración de bases de datos utilizando Spring Data JPA

Al desarrollar una API REST con Spring Boot, una de las tareas más comunes es la integración con una base de datos para la persistencia de los datos. Spring Data JPA es uno de los proyectos del ecosistema Spring que facilita esta integración, ofreciendo una capa de abstracción además de Java Persistence API (JPA). En este capítulo, exploraremos cómo desarrollar una API REST con Spring Boot e integrarla con una base de datos usando Spring Data JPA.

Introducción a Spring Data JPA

Spring Data JPA es un subproyecto de Spring Data, cuyo objetivo es simplificar la implementación de repositorios de acceso a datos. Permite a los desarrolladores escribir menos código de acceso a datos al proporcionar una forma de crear interfaces de repositorio que implementan automáticamente operaciones CRUD (Crear, Leer, Actualizar, Eliminar) para sus entidades JPA.

Configuración del proyecto Spring Boot

Para comenzar, cree un nuevo proyecto Spring Boot usando Spring Initializr. Agregue las siguientes dependencias:

  • Web de primavera
  • JPA de datos de primavera
  • Controlador de base de datos (por ejemplo, H2, MySQL, PostgreSQL)

Después de generar e importar el proyecto a su IDE, estará listo para comenzar a configurar la integración de la base de datos.

Configuración de la base de datos

En el archivo application.properties o application.yml, agregue las propiedades de configuración de la base de datos que eligió. Por ejemplo, para la base de datos H2, puedes agregar:


spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.nombredeusuario=sa
primavera.fuente de datos.contraseña=
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect

Para otras bases de datos, reemplace las propiedades anteriores con la información correspondiente al controlador y dialecto de la base de datos elegidos.

Definición de entidades JPA

Las entidades JPA representan tablas en su base de datos. Cada entidad es una clase Java anotada con @Entity y se asigna a una tabla en la base de datos. Por ejemplo, una entidad Usuario se puede definir de la siguiente manera:


@Entidad
Usuario de clase pública {
    
    @Identificación
    @GeneratedValue(estrategia = TipoGeneración.IDENTIDAD)
    identificación larga privada;
    
    nombre de cadena privada;
    correo electrónico de cadena privada;
    
    // Los captadores y definidores se omiten por brevedad
}

Las anotaciones @Id y @GeneratedValue se utilizan para especificar la clave principal de la tabla y su estrategia de generación de valor.

Crear repositorios

Con Spring Data JPA, puede crear interfaces de repositorio que extiendan JpaRepository o CrudRepository. Estas interfaces proporcionan métodos CRUD listos para usar. Por ejemplo:


interfaz pública UserRepository extiende JpaRepository {
    // Aquí se pueden declarar métodos adicionales
}

Spring Data JPA implementará automáticamente esta interfaz al iniciar la aplicación.

Desarrollando la API REST

Para exponer operaciones CRUD como puntos finales de API REST, puede crear una clase de controlador con las anotaciones @RestController y @RequestMapping. Por ejemplo:


@RestController
@RequestMapping("/api/usuarios")
Controlador de usuario de clase pública {
    
    Repositorio de usuarios final privado Repositorio de usuarios;
    
    UserController público (UserRepository userRepository) {
        this.userRepository = userRepository;
    }
    
    @GetMapping
    Lista pública getAllUsers() {
        devolver userRepository.findAll();
    }
    
    @PostMapping
    Usuario público createUser(@RequestBody Usuario usuario) {
        devolver userRepository.save(usuario);
    }
    
    // Otros métodos para actualizar y eliminar usuarios
}

Los métodos del controlador utilizan el repositorio para interactuar con la base de datos y devolver datos como una respuesta HTTP.

Operaciones avanzadas con Spring Data JPA

Spring Data JPA también admite operaciones de consulta avanzadas. Puede definir métodos de consulta personalizados en la interfaz del repositorio utilizando la convención de nomenclatura de Spring Data o la anotación @Query. Por ejemplo:


interfaz pública UserRepository extiende JpaRepository {
    Lista findByName(Nombre de cadena);
    
    @Query("SELECCIONE u DEL usuario u DONDE u.email =? 1")
    Usuario findByEmail (cadena de correo electrónico);
}

Spring Data JPA implementa automáticamente estos métodos y se pueden utilizar en el controlador.

Conclusión

Integrar una API REST con una base de datos usando Spring Boot y Spring Data JPA es un proceso simplificado que reducecantidad de código de acceso a datos que necesita escribir. Con la configuración y definición correctas de entidades y repositorios, puede crear una API REST potente y escalable con operaciones CRUD y consultas avanzadas.

Este capítulo proporcionó una descripción general de cómo se puede desarrollar una API REST con Spring Boot e integrarla con una base de datos utilizando Spring Data JPA. Si sigue las mejores prácticas y aprovecha las funciones que ofrece el ecosistema Spring, puede aumentar significativamente su productividad como desarrollador de Java.

Ahora responde el ejercicio sobre el contenido:

¿Cuál de las siguientes afirmaciones sobre el desarrollo de API REST con Spring Boot y Spring Data JPA es cierta?

¡Tienes razón! Felicitaciones, ahora pasa a la página siguiente.

¡Tú error! Inténtalo de nuevo.

Imagen del artículo Desarrollo de API REST con Spring Boot: implementación de operaciones CRUD

Siguiente página del libro electrónico gratuito:

135Desarrollo de API REST con Spring Boot: implementación de operaciones CRUD

6 minutos

¡Obtén tu certificado para este curso gratis! descargando la aplicación Cursa y leyendo el libro electrónico allí. ¡Disponible en Google Play o App Store!

Disponible en Google Play Disponible en App Store

+ 6,5 millones
estudiantes

Certificado gratuito y
válido con código QR

48 mil ejercicios
gratis

Calificación de 4.8/5
en tiendas de aplicaciones

Cursos gratuitos de
vídeo, audio y texto.