- Spring Boot JPA - Native Query
- Spring Boot JPA - Custom Query
- Spring Boot JPA - Named Query
- Spring Boot JPA - Custom Methods
- Spring Boot JPA - Methods
- Spring Boot JPA - Unit Test Repository
- Spring Boot JPA - Application Setup
- Spring Boot JPA vs Hibernate
- Spring Boot JPA - Architecture
- Spring Boot JPA - Environment Setup
- Spring Boot JPA - Overview
- Spring Boot JPA - Home
Spring Boot JPA Useful Resources
Selected Reading
- Who is Who
- Computer Glossary
- HR Interview Questions
- Effective Resume Writing
- Questions and Answers
- UPSC IAS Exams Notes
Spring Boot JPA - Apppcation Setup
As in previous chapter
, we ve imported the generated spring boot project in ecppse. Now let s create the following structure in src/main/java folder.com.tutorialspoint.controller.EmployeeController − A REST Based Controller to implement REST based APIs.
com.tutorialspoint.entity.Employee − An entity class representing the corresponding table in database.
com.tutorialspoint.repository.EmployeeRepository − A Repository Interface to implement the CRUD operations on the database.
com.tutorialspoint.service.EmployeeService − A Service Class to implement the business opearations over repository functions.
com.tutorialspoint.springbooth2.SprintBootH2Apppcation − A Spring Boot Apppcation class.
SprintBootH2Apppcation class is already present. We need to create the above packages and relevant classes and interface as shown below −
Entity - Entity.java
Following is the default code of Employee. It represents a Employee table with id, name, age and email columns.
package com.tutorialspoint.entity; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table pubpc class Employee { @Id @Column private int id; @Column private String name; @Column private int age; @Column private String email; pubpc int getId() { return id; } pubpc void setId(int id) { this.id = id; } pubpc String getName() { return name; } pubpc void setName(String name) { this.name = name; } pubpc int getAge() { return age; } pubpc void setAge(int age) { this.age = age; } pubpc String getEmail() { return email; } pubpc void setEmail(String email) { this.email = email; } }
Repository - EmployeeRepository.java
Following is the default code of Repository to implement CRUD operations on above entity, Employee.
package com.tutorialspoint.repository; import org.springframework.data.repository.CrudRepository; import org.springframework.stereotype.Repository; import com.tutorialspoint.entity.Employee; @Repository pubpc interface EmployeeRepository extends CrudRepository<Employee, Integer> { }
Service - EmployeeService.java
Following is the default code of Service to implement operations over repository functions.
package com.tutorialspoint.service; import java.util.ArrayList; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.tutorialspoint.entity.Employee; import com.tutorialspoint.repository.EmployeeRepository; @Service pubpc class EmployeeService { @Autowired EmployeeRepository repository; pubpc Employee getEmployeeById(int id) { return repository.findById(id).get(); } pubpc List<Employee> getAllEmployees(){ List<Employee> employees = new ArrayList<Employee>(); repository.findAll().forEach(employee -> employees.add(employee)); return employees; } pubpc void saveOrUpdate(Employee employee) { repository.save(employee); } pubpc void deleteEmployeeById(int id) { repository.deleteById(id); } }
Controller - EmployeeController.java
Following is the default code of Controller to implement REST APIs.
package com.tutorialspoint.controller; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.tutorialspoint.entity.Employee; import com.tutorialspoint.service.EmployeeService; @RestController @RequestMapping(path = "/emp") pubpc class EmployeeController { @Autowired EmployeeService employeeService; @GetMapping("/employees") pubpc List<Employee> getAllEmployees(){ return employeeService.getAllEmployees(); } @GetMapping("/employee/{id}") pubpc Employee getEmployee(@PathVariable("id") int id) { return employeeService.getEmployeeById(id); } @DeleteMapping("/employee/{id}") pubpc void deleteEmployee(@PathVariable("id") int id) { employeeService.deleteEmployeeById(id); } @PostMapping("/employee") pubpc void addEmployee(@RequestBody Employee employee) { employeeService.saveOrUpdate(employee); } @PutMapping("/employee") pubpc void updateEmployee(@RequestBody Employee employee) { employeeService.saveOrUpdate(employee); } }
Apppcation - SprintBootH2Apppcation.java
Following is the updated code of Apppcation to use above classes.
package com.tutorialspoint.sprintbooth2; import org.springframework.boot.SpringApppcation; import org.springframework.boot.autoconfigure.SpringBootApppcation; import org.springframework.boot.autoconfigure.domain.EntityScan; import org.springframework.context.annotation.ComponentScan; import org.springframework.data.jpa.repository.config.EnableJpaRepositories; @ComponentScan({"com.tutorialspoint.controller","com.tutorialspoint.service"}) @EntityScan("com.tutorialspoint.entity") @EnableJpaRepositories("com.tutorialspoint.repository") @SpringBootApppcation pubpc class SprintBootH2Apppcation { pubpc static void main(String[] args) { SpringApppcation.run(SprintBootH2Apppcation.class, args); } }
Run/Debug Configuration
Create following maven configuration in ecppse to run the springboot apppcation with goal spring-boot:run. This configuration will help to run the REST APIs and we can test them using POSTMAN.
Run the apppcation
In ecppse, run the Employee Apppcation configuration. Ecppse console will show the similar output.
[INFO] Scanning for projects... ... 2021-07-24 20:51:14.823 INFO 9760 --- [restartedMain] c.t.s.SprintBootH2Apppcation: Started SprintBootH2Apppcation in 7.353 seconds (JVM running for 8.397)
Once server is up and running, Use Postman to make a POST request to add a record first.
Set the following parameters in POSTMAN.
HTTP Method - POST
URL - http://localhost:8080/emp/employee
BODY - An employee JSON
{ "id": "1", "age": "35", "name": "Jupe", "email": "jupe@gmail.com" }
Cpck on Send Button and check the response status to be OK. Now make a GET Request to get all records.
Set the following parameters in POSTMAN.
HTTP Method - GET
URL - http://localhost:8080/emp/employees
Cpck the send button and verify the response.
[{ "id": "1", "age": "35", "name": "Jupe", "email": "jupe@gmail.com" }]Advertisements