Spring Boot 033
Spring Boot 033
Spring Boot 033
Architecture
The Spring Boot is built on top of the core Spring framework. It is a simplified and
automated version of the spring framework. The spring boot follows a layered
architecture in which each layer communicates to other layers.
The main aim of spring boot is to remove the XML and annotations-based
configuration settings from the application.
The presentation layer is the top layer of the spring boot architecture. It consists of
Views. i.e., the front-end part of the application. It handles the HTTP requests and
performs authentication. It is responsible for converting the JSON field’s
parameter to Java Objects and vice-versa. Once it performs the authentication of
the request it passes it to the next layer. i.e., the business layer.
2. Business Layer
The business layer contains all the business logic. It consists of services classes. It
is responsible for validation and authorization.
3. Persistence Layer
The persistence layer contains all the database storage logic. It is responsible for
converting business objects to the database row and vice-versa.
4. Database Layer
The database layer contains all the databases such as MySql, MongoDB, etc. This
layer can contain multiple databases. It is responsible for performing the CRUD
operations.
Spring Boot Flow Architecture
Explanation:
-----
The java persistence API provides a specification for persisting, reading, and
managing data from your java object to your relational tables in the database.
Dependency->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
application.properties file:
spring.datasource.url=jdbc:mysql://localhost:3306/emp
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.database-platform = org.hibernate.dialect.MySQL5Dialect
spring.jpa.generate-ddl=true
spring.jpa.hibernate.ddl-auto = update
Modal layer:
Create a simple POJO(Plain old java class) with some JPA annotation.
@GeneratedValue(strategy = GenerationType.AUTO)
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import com.example.demo.modal.Employee;
@Repository
public interface EmployeeRepository extends JpaRepository<Employee, Long>{
ArrayList<Employee> findAllEmployee();
Service layer:
@Service: This annotation is used with classes that provide some business
functionalities. Spring context will autodetect these classes when
annotation-based configuration and classpath scanning is used. Here JPA
repository has lots of predefined generic methods to perform the database
operation some are used in the below code.
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Optional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.example.demo.modal.Employee;
import com.example.demo.repository.EmployeeRepository;
@Service
@Autowired
EmployeeRepository employeeRepository;
@Override
@Override
if (opt.isPresent())
return opt.get();
else
return null;
@Override
employeeRepository.save(employee);
}
@Override
employeeRepository.deleteAll();
Controller layer:
package com.example.demo.controller;
import java.util.ArrayList;
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.RestController;
import com.example.demo.modal.Employee;
import com.example.demo.service.EmpServiceImpl;
@RestController
@Autowired
EmpServiceImpl empServiceImpl;
@PostMapping("/")
empServiceImpl.addEmployee();
@GetMapping("/findall")
return empServiceImpl.findAllEmployee();
@GetMapping("/findbyid/{id}")
return empServiceImpl.findAllEmployeeByID(id);
}
@DeleteMapping("/delete")
empServiceImpl.deleteAllData();