Software Development Notions

Spring Data (JPA)

April 17, 2020

Vamos a crear una aplicación que se conecte a una base de datos usando JPA, un módulo que facilita la implementación de repositorios basados en JPA. Creamos una carpeta “modelos” y dentro una clase que definirá el modelo de nuestra tabla en la BD.

Persona.java

@Entity
public class Persona {
    @Id
    private int idPersona;
    @Column(name = "nombre",length = 50)
    private String nombre;

    public int getIdPersona() {
        return idPersona;
    }

    public void setIdPersona(int idPersona) {
        this.idPersona = idPersona;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }
}

Después, creamos dentro de “repositorios” una interfaz que extienda de “JpaRepository”.

IPersonaRepositorio.java

public interface IPersonaRepositorio extends JpaRepository<Persona,Integer> {
}

Es necesario que el archivo application.properties tenga configurado lo siguiente:

spring.jpa.database=POSTGRESQL
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update
spring.datasource.driver-class-name=org.postgresql.Driver
spring.datasource.url=jdbc:postgresql://localhost/Welcome
spring.datasource.username=postgresql
spring.datasource.password=passwword
spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true

El siguiente paso es crear la base de datos desde pgAdmin 4 (Postgresql), y ejecutar la aplicación para que se nos cree la estructura de tablas.

Para que se nos cree una tabla en la BD y meter datos dentro de ésta, definiremos nuestro método para insertar datos a la tabla.

WelcomeController.java

				@Autowired
        private IPersonaRepositorio repositorio;
        @GetMapping("/welcome")
        public String welcome(@RequestParam(name="name",required = false,defaultValue = "suso") String name, Model model) {
            Persona p = new Persona();
            p.setIdPersona((int) repositorio.count());
            p.setNombre(name);
            repositorio.save(p);
            model.addAttribute("name", name);
            return "welcome";
        }

Tendremos otro método que listara todo el contenido de la tabla. Le crearemos una plantilla para mostrar los datos guardados en el modelo.

WelcomeController.java

		@GetMapping("/listar")
    public String todasLasPersonas(Model model) {
        model.addAttribute("personas",repositorio.findAll());
        return "personas";
    }

Ahora nos queda recorrer en la vista la lista de personas guardadas en el Model.

Personas.html

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<table>
    <th:block th:each="persona : ${personas}">
        <tr>
            <td th:text="${persona.idPersona}"></td>
            <td th:text="${persona.nombre}"></td>
        </tr>
    </th:block>
</table>
</body>
</html>

Welcome to my blog about Software Development! I would like to invite you to learning with me 👨‍💻

Search all posts