Facts
✅ TDP Service를 Sam famework를 사용하여 Serverless로 배포
✅ Spring 프레임워크의 기본 레이어(Repository, Service, Controller) 이해
✅ JPA 이해
Findings
✏️ 기본 레이어
스프링에서 서버를 개발할 때, 처리 과정을 3개로 분리해서 개발한다.
분리하는 이유는, 코드가 변경이 되어도 서로 영향을 주지 않게 하여, 확장성을 높이기 위함이다.
역할별로 Controller, Service, Repository로 분리한다.
(1) Controller
- 클라이언트의 요청을 받음
- 요청에 대한 처리는 서비스에게 전담
- 클라이언트에게 응답
(2) Service
- 서버에서 사용자의 요구사항 처리하는 핵심 기능
- DB 정보가 필요할 때는 Repository에게 전담
(3) Repository
- DB 관리
- DB CRUD 작업 처리
✏️ JPA (Java Persistence API)
자바 어플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스이다.
SQL을 쓰지 않고 데이터를 생성, 조회, 수정, 삭제할 수 있도록 해주는 번역기다.
🤔 JPA가 있다면,
자바를 짜다가 갑자기 SQL를 짜지 않아도 된다. 명령(ex. SQL query)을 자바로 만들 수 있다.
그러면 유지보수가 쉽다.
🤔 유지보수가 쉽다고? 왜?
기존 : 필드 변경 시, 모든 SQL을 수정해야 한다.
JPA : 필드만 추가하면 된다. SQL은 JPA가 처리하기 때문에 손댈 것이 없다.
- LectureRepository.java Interface
아래의 코드는 LectureRepository가 JPA Repository의 메소드를 사용한다는 것을 말한다.
<Lecture, Long>은 <엔티티, ID 유형>을 말한다. Lecture Class는 Long형을 ID로 지정하고 있기에 <Lecture, Long>라고 작성한다.
public interface LectureRepository extends JpaRepository<Lecture, Long> {}
- JPA 실행 코드
@Bean
public CommandLineRunner demo(LectureRepository lectureRepository) {
return (args) -> {
Lecture course = new Lecture("웹개발의 봄", "남병관");
lectureRepository.save(course);
lectureRepository.findAll();
};
}
✏️ JPA가 클래스가 아닌 인터페이스를 사용하는 이유
<상속>을 통해, 코드를 재사용한다면, 부모클래스를 상속받은 자식클래스에서는 부모 클래스의 모든 메서드를 그대로 사용할 수 있기에, 캡슐화를 위반한다. 또한, 원치않은 메서드들도 상속된다. 원치 않은 메서드도 상속되면 의도치 않은 버그도 발생시킬 수 있다.
<인터페이스>를 사용하면, 함수의 특징만을 정의하고 함수의 내용이 없기에 결합도가 낮다.
클래스의 기본틀(= 함수의 특징만을 정의한 명세)을 제공하여 정의된 메서드를 통해서만 코드를 재사용할 수 있기에, 개발자들에게 정형화된 개발을 할 수 있게 해준다.
📝 출처
'Project > TIL, WIL' 카테고리의 다른 글
TIL(35) 21-11-05 : Spring은 고마운 친구 (0) | 2021.11.05 |
---|---|
TIL(34) 21-11-04 : JPA를 이용하여 CRUD 기능 구현 (0) | 2021.11.04 |
TIL(32) 21-11-02 : Authentication 수정 완료 (0) | 2021.11.02 |
TIL(31) 21-11-01 : SAM 프레임워크로 서버리스 배포하기 (0) | 2021.11.01 |
TIL(30) 21-10-29 : 서버리스 백엔드로 게시판 API 만들기 (0) | 2021.10.29 |