Spring Data JPA es un método para implementar repositorios JPA para agregar fácilmente la capa de acceso a datos en las aplicaciones. CRUD significa crear, recuperar, actualizar, eliminar, que son las posibles operaciones que se pueden realizar en una base de datos. En este artículo, veremos un ejemplo de cómo acceder a los datos de una base de datos ( MySQL para este artículo) en una aplicación Spring Boot usando Spring Data JPA.
Para aprender a crear un proyecto Spring Boot, consulte este artículo .
Una base de datos es una colección de datos interrelacionados que ayuda en la recuperación, inserción y eliminación eficiente de datos de la base de datos y organiza los datos en forma de tablas, vistas, esquemas, informes, etc. Entonces, para cualquier aplicación, la base de datos es uno de los módulos más importantes y tiene que haber una forma de comunicarse con él. Por lo tanto, se siguen los siguientes pasos para acceder a la base de datos usando Spring Data JPA:
- Vaya a spring initializr y cree un nuevo proyecto con las siguientes dependencias:
- Telaraña de primavera
- JPA de datos de primavera
- Controlador MySQL
- Descargue el proyecto inicial e impórtelo en el IDE.
- Después de que el proyecto se sincronice, crearemos una clase modelo Company con la anotación @Entity , lo que significa que esta clase se asigna a la tabla en la base de datos. Agregue los miembros de datos con los mismos tipos de datos que las columnas en la base de datos y genere constructores y captadores. Agregue la anotación @Id al miembro de datos que se comportará como el atributo de clave principal en la tabla y @Generatedvalue(strategy = generationtype.auto) para incrementar automáticamente el atributo de clave principal. La siguiente es la implementación de esta clase:
@Entity
public
class
Company {
// Primary ID which increments
// automatically when new entry
// is added into the database
@Id
@GeneratedValue
(strategy
= GenerationType.AUTO)
int
id;
String name;
// In months
int
duration;
String profile;
// Can be 0
int
stipend;
boolean
workFromHome;
public
Company()
{
}
// Parameterized constructor
public
Company(String name,
int
duration,
String profile,
int
stipend,
boolean
workFromHome)
{
this
.name = name;
this
.duration = duration;
this
.profile = profile;
this
.stipend = stipend;
this
.workFromHome = workFromHome;
}
// Getters and setters of
// the variables
public
int
getId()
{
return
id;
}
public
String getName()
{
return
name;
}
public
int
getDuration()
{
return
duration;
}
public
String getProfile()
{
return
profile;
}
public
int
getStipend()
{
return
stipend;
}
public
void
setId(
int
id)
{
this
.id = id;
}
public
boolean
isWorkFromHome()
{
return
workFromHome;
}
- Ahora, cree una interfaz CompanyRepository con la anotación @Repository que implementará CrudRepository . Las funciones para realizar las operaciones CRUD se definirán en la interfaz como se muestra a continuación:
@Repository
public
interface
CompanyRepository
extends
CrudRepository<Company,
Integer> {
Company findById(
int
id);
List<Company> findAll();
void
deleteById(
int
id);
}
Nota: Las funciones no se implementarán porque ya están implementadas en CrudRepository .
- Ahora, crearemos API REST (GET, POST, PUT, DELETE) como se muestra a continuación:
@RestController
public
class
CompanyController {
@Autowired
private
CompanyRepository repo;
// Home Page
@GetMapping
(
"/"
)
public
String welcome()
{
return
"<html><body>"
+
"<h1>WELCOME</h1>"
+
"</body></html>"
;
}
// Get All Notes
@GetMapping
(
"/company"
)
public
List<Company> getAllNotes()
{
return
repo.findAll();
}
// Get the company details by
// ID
@GetMapping
(
"/company/{id}"
)
public
Company getCompanyById(
@PathVariable
(value =
"id"
)
int
id)
{
return
repo.findById(id);
}
@PostMapping
(
"/company"
)
@ResponseStatus
(HttpStatus.CREATED)
public
Company addCompany(
@RequestBody
Company company)
{
return
repo.save(company);
}
@DeleteMapping
(
"/delete/{id}"
)
public
void
deleteStudent(
@PathVariable
(value =
"id"
)
int
id)
{
repo.deleteById(id);
}
@PutMapping
(
"/company/{id}"
)
public
ResponseEntity<Object> updateStudent(
@RequestBody
Company company,
@PathVariable
int
id)
{
Optional<Company> companyRepo
= Optional.ofNullable(
repo.findById(id));
if
(!companyRepo.isPresent())
return
ResponseEntity
.notFound()
.build();
company.setId(id);
repo.save(company);
return
ResponseEntity
.noContent()
.build();
}
- Ahora, abra el archivo application.properties y agregue el siguiente código. Reemplace el nombre de la base de datos con la base de datos que contiene la tabla Company , el nombre de usuario con el nombre de usuario del servidor mysql (el valor predeterminado es root) y la contraseña con la contraseña de mysql.
spring.datasource.url=jdbc:mysql://localhost:3306/database_name
spring.datasource.username=nombre de usuario
spring.datasource.password=contraseña
spring.jpa.hibernate.ddl-auto=actualizar - Esto completa el proceso de establecer una conexión con la base de datos. Ahora, construimos y ejecutamos el proyecto y llamamos a las diferentes API.
Nota: Por lo general, se prefiere Postman para probar las API de llamadas, por lo tanto, hemos utilizado la herramienta Postman para probar el proyecto.
Producción:
- La base de datos:
- Probando con la colección POSTMAN :
Publicación traducida automáticamente
Artículo escrito por AakashYadav4 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA