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 👨💻