인터페이스 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가지 방법
- JDBC
- Spring JDBC
- 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'
'코딩배움일지 > 인터페이스 구현' 카테고리의 다른 글
인터페이스 6일차 (회원가입 및 중복여부확인 Create, Read) (0) | 2023.01.10 |
---|---|
인터페이스 5일차(Repository) (0) | 2023.01.09 |
유효성검사 (0) | 2023.01.09 |
인터페이스 4일차 (postman) (0) | 2023.01.06 |
인터페이스 3일차 (DTO) (0) | 2023.01.05 |