인터페이스 5일차 (Service, Autowired, JPA, ORM)

2023. 1. 9. 09:49코딩배움일지/인터페이스 구현

Service

  • MVC 디자인 패턴의 Model의 일부
  • 실제 비즈니스 로직을 담당하는 부분
  • 각종 연산을 담당
  • Controller가 받은 Request를 Repository에서 필요한 데이터를 가져와 연산 후 Response에 실을 데이터를 반환

Spring Boot Service 작성

@Service

  • 해당 클래스를 Spring Bean 으로 생성 해주는 어노테이션
  • @Component로 사용되긴 하지만 해당 클래스가 Service를 담당한다는 것을 직접적으로 보여주기 위해 Service라는 이름을 사용
@Service
public class AuthService {
	
	public ResponseDto<LoginDto> login(AuthPostDto dto){
		LoginDto result = new LoginDto("JWT",3600000);
		return ResponseDto.setSuccess("", result);
	}

}

 

@Autowired

  • Spring context에 등록한 Spring Bean을 IoC를 통해 DI를 수행하는 어노테이션
@RestController
@RequestMapping("api/auth/")
public class AuthController {
	
	// @Autowired : 해당하는 클래스 인스턴스를 자동으로 생성(주입) 해줌
	@Autowired AuthService authService;
	
	@PostMapping("")
	public ResponseDto<LoginDto> login(@RequestBody AuthPostDto requestBody){
//		LoginDto result = new LoginDto("JWT",3600000);
//		return ResponseDto.setSuccess("login success", result);
		return authService.login(requestBody);
	}
}

 

JPA

  • Java Persistence API
  • 자바 플랫폼 SE, EE를 사용하는 응용프로그램에서 관계형 데이터베이스의 관리를 담당하는 Java API
  • 자바 ORM 기술에 대한 표준 명세

Persistence (지속성)

  • 데이터를 생성한 프로그램이 종료되더라도 사라지지 않는 데이터의 특성
  • 지속성을 갖지 않는 데이터는 메모리에만 존재하기 때문에 프로그램을 종료하면 모두 상실함

Object Persistence (영구적인 객체)

  • 메모리 상의 데이터를 DMBS에 영구적으로 저장하여 지속성 부여 가능
  • 데이터를 데이터베이스에 저장하는 3가지 방법
  1. JDBC
  2. Spring JDBC
  3. Persistence Framework (ex. MyBatis, JPA)

Persistence Layer

  • 프로그램의 아키텍처에서, 데이터에 지속성을 부여해주는 계층
  • 과거에는 JDBC를 이용하여 직접 구현하였지만, 최근 Persistence Framework를 이용한 개발이 추세

Persistence Framework

  • JDBC의 복잡한 프로그래밍 없이 간단한 로직만으로 데이터베이스와 연동되는 시스템을 빠르게 개발할 수 있음

ORM

  • Object-Relational Mapping
  • class 및 instance와 관계형 데이터베이스의 table 및 entity를 자동으로 매핑해주는 것

객체 모델과 관계형 모델 간에 불일치를 ORM을 통해 객체 모델 간의 관계를 통해 SQL을 자동으로 생성

 

Project에 JPA 의존성 주입

build.gradle

implementation 'org.springframework.boot:spring-boot-starter-data-jpa'