Sesión 23 Spring Boot
Sesión 23 Spring Boot
Sesión 23:
Spring Boot
• Introducción Spring
• Spring Data JDBC
• CRUD usando Spring
Introducción a Spring
Spring data
Agregado (agggregate).
Repositorio (repository).
Spring data - Agregado
Se Usan para:
Simple.
Spring data – JDBC - Configuración
Se debe tener el plugin de SpringBoot en Netbeans.
En la pestaña “Plugins
disponibles” se busca el plugin
llamado:
NB SpringBoot
Spring data – JDBC - Configuración
https://github.com/AlexFalappa/n
b-springboot/releases
Después de descargarlo, en la
pestaña de “Downloaded”.
Finalmente, seleccionar el
elemento agregado y presionar en
“Install”.
Spring data – JDBC - Configuración
En la barra de menú:
https://stackoverflow.com/questions/597
63531/maven-dependencies-are-failing-
with-a-501-error
En la ventana emergente,
selección en la carpeta “Maven” y
en el tipo de proyecto a crear
“Spring Boot Initializr Project”.
Clic en “Next”.
Spring data – JDBC – Crear proyecto
Clic en “Next”.
Spring data – JDBC – Crear proyecto
Clic en “Finish”.
Spring data – JDBC –
Configurar proyecto
En el proyecto creado debe haber una archivo:
Other Sources > src/main/resourses > default package >
application.properties
Es mensaje significa que el Maven no está funcionando correctamente debido a la versión, revisar
la configuración de Maven explicada en la diapositiva XX.
Spring data – JDBC – Ejecución
Abrir el archivo:
Source Packages > com.example.demo > DemoApplication.java
Y ejecutarlo.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>
Si se crea el proyecto con SpringBoot como se explicó en esta sesión, no es necesario hacer
este paso.
Spring Data – JDBC - Configuración
Crear un archivo de Java dentro del proyecto nombrado como la clase que se desea usar.
Ejemplo: Se tiene una base de datos en MySQL con una tabla de clientes, se crea la clase
Cliente en Java
@Table(“Cliente”)
public class Cliente {
@id
@column(“ID”)
private Long idCliente;
@column(“Nombre”)
private Long nombre;
@column(“Dirección”)
private Long direccion;
// Constructores
// Métodos
}
Spring data – JDBC - Configuración
El decorador @Table() le permite a Spring
saber cuál es la tabla que se está
representando con esta clase.
El decorador @id le permite a Spring saber
cuál es el atributo único (Primary Key), por
@Table(“Cliente”)
el momento sólo se deben usar como
public class Cliente {
primary key auto-incrementales auto-
@id
generados.
@column(“ID”)
private Long idCliente;
El decorador @column() le permite a
@column(“Nombre”)
Spring saber cuál es el nombre de la
private Long nombre;
columna que se asocia con el atributo de la
@column(“Dirección”)
clase que se define a continuación.
private Long direccion;
Nótese que los decoradores no requieren
// Constructores de punto y coma (;) al final.
// Métodos (CRUD)
}
Spring data – JDBC - Configuración
Se crea el repositorio de la clase que se creó, para esto se crea una nueva interfaz de java con
el nombre RepositorioNombreDeLaClase que extiende la clase CrudRepository así:
@Repository
Public interface RepositorioCliente extends CrudRepository<Cliente, Long>{}
Decorador para referenciar la La clase creada. El tipo de valor del Primary Key.
creación de un repositorio.
Spring data – JDBC - Configuración
Finalmente en la clase principal (donde está el main) se agregan los siguientes elementos:
@SpringBootApplication
public class Aplicacion{ El texto en negrilla es lo que se debe
@Autowired agregar, el resto es parte del código
RepositorioCliente repositorioCliente; autogenerado por el FrameWork de
Spring.
public static void main(String[] args){
SpringApplication.run(MuseoApplication.class, args);
}
@Bean
ApplicationRunner applicationRunner(){
return args ->(
//Código pruebas (llamado al CRUD)
);
}
}
CRUD con JDBC - Create
Para crear registros en la tabla se usan los constructores a través de los
métodos crearCliente()
@Table(“Cliente”)
public class Cliente {
@id
@column(“ID”)
Se crea un único constructor que
private Long idCliente;
@column(“Nombre”) contemple todos los atributos de la
private Long nombre; clase. Adicionalmente, se crean
@column(“Dirección”) varias versiones del método
private Long direccion;
crearCliente que utilizan el
private Cliente(Long idCliente, String nombre, String ciudad){ constructor
this.idCliente = idCliente;
this.nombre = nombre;
this.ciudad = ciudad;
}
public static crearCliente(Long idCliente, String nombre, String ciudad){
return new Cliente(idCliente, nombre, ciudad)
}
public static crearCliente(String nombre, String ciudad){
return new Cliente(null , nombre, ciudad)
}
}
CRUD con JDBC - Retrieve
Se puede recuperar toda la lista de elementos de una tabla utilizando
uno de los métodos de la interfaz del repositorio:
@SpringBootApplication
public class Aplicacion{
@Autowired
RepositorioCliente repositorio El método findAll() retorna un
elemento List<clase>.
public static void main(String[] args){
SpringApplication.run(MuseoApplication.class, args);
}
@Bean
ApplicationRunner applicationRunner(){
return args ->(
List<Cliente> resultado = repositorio.findAll();
);
}
}
CRUD con JDBC - Retrieve
Se puede recuperar un elemento de una tabla en forma de diccionarios
utilizando uno de los métodos de la interfaz del repositorio:
@SpringBootApplication
public class Aplicacion{
@Autowired
RepositorioCliente repositorio; Para poder usar el método
findById() es necesario conocer el
public static void main(String[] args){
ID del registro.
SpringApplication.run(MuseoApplication.class, args);
}
@Bean
ApplicationRunner applicationRunner(){
return args ->(
Cliente resultado = repositorio.findById(1);
);
}
}
CRUD con JDBC - Update
Para actualizar un registro es necesario primero encontrarlo con el
método findById() y luego utilizando los métodos SET.
@SpringBootApplication
public class Aplicacion{
@Autowired
RepositorioCliente repositorio; Para poder usar el método
findById() es necesario conocer el
public static void main(String[] args){
ID del registro.
SpringApplication.run(MuseoApplication.class, args);
}
@Bean
ApplicationRunner applicationRunner(){
return args ->(
Cliente resultado = repositorio.findById(1);
);
}
}
CRUD con JDBC - Update
Para crear registros en la tabla se usan los constructores a través de los
métodos crearCliente()
@SpringBootApplication
@Table(“Cliente”)
public class Cliente { public class Aplicacion{
@id @Autowired
@column(“ID”) RepositorioCliente repositorio;
private Long idCliente;
@column(“Nombre”) public static void main(String[] args){
private Long nombre; SpringApplication.run(MuseoApplication.class, args);
@column(“Dirección”) }
private Long direccion; @Bean
ApplicationRunner applicationRunner(){
return args ->(
… RepositorioMuseo repositorio;
Cliente resultado = repositorio.findById(1);
public void setNombre(String nombre){ resultado.setNombre(“nuevo Nombre”);
this.nombre = nombre; repositorio.save(resultado)
} );
}
public void setNombre(String direccion){ }
this.direccion = direccion;
}
}
CRUD con JDBC - Delete
Para eliminar un registro primero podemos buscarlo con el método
findById() y luego utilizar el método de la interfaz del repositorio.
@SpringBootApplication
public class Aplicacion{
@Autowired Para poder usar el método
RepositorioCliente repositorio; findById() es necesario conocer el
ID del registro.
public static void main(String[] args){
SpringApplication.run(MuseoApplication.class, args);
}
@Bean
ApplicationRunner applicationRunner(){
return args ->(
RepositorioMuseo repositorio;
Cliente resultado = repositorio.findById(1);
repositorio.delete(resultado);
);
}
}
Ejercicios
Ejercicios
• Construya un esquema en MySQL con una tabla llamada Productos. La tabla debe tener
los atributos: código, nombre, precio e inventario (inicialmente la tabla debe estar vacía)
• Implemente las operaciones CRUD utilizando Spring Data JDBC
• Utilizando los métodos implementados en el punto anterior:
- Ingrese los siguientes registros a la tabla
código nombre precio inventario
1 Manzanas 5000.0 25
2 Limones 2300.0 15
3 Peras 2700.0 33
4 Arandanos 9300.0 5
5 Tomates 2100.0 42
Tomado de
: https://www.google.com/url?sa=i&url=https%3A%2F%2Ffanyv88.com%3A443%2Fhttps%2Fwww.codejava.net%2Fjava-se%2Fswing%2Fjpanel-basic-tutorial-and-examples&psig=AOvVaw3b7cNlPeYc2QuqfVqc1LuL&ust=1622342894827000&source=images&cd=vfe&ved=0CAIQjRxqFwoTCOi-n7Lw7fACFQAAAAAdAAAAABAe
Referencias
[1] Sierra, K., & Bates, B. (2013). Head first java. " O'Reilly Media, Inc.".
[2] Martin, R. C. (2009). Clean code: a handbook of agile software craftsmanship. Pearson Education.
(Chap 1, 2)
[3] Sommerville, I. (2016). Software Engineering GE. Pearson Australia Pty Limited. (Chap 6, 6.3)
[4] Coronel, C., Morris, S., & Rob, P. (2011). Bases de datos: diseño, implementación y administración.
Cengage Learning Editores. (Chap 1)
[5] Seidl, M., Scholz, M., Huemer, C., & Kappel, G. (2015). UML@ classroom: An introduction to
object-oriented modeling. Springer. (Chap 1, 4)