감사쟁이야
감사쟁이의 성장기록
감사쟁이야
  • 분류 전체보기 (130)
    • Java-Spring (0)
    • ComputerScience (0)
    • Project (64)
      • TIL, WIL (57)
      • Project Retrospect (7)
    • Problem Solving (63)
    • Book Review (1)
    • Culture & Discovery (0)
    • Daily Log (2)

블로그 메뉴

  • 홈
  • 깃허브
  • 방명록
hELLO · Designed By 정상우.
감사쟁이야

감사쟁이의 성장기록

TIL(33) 21-11-03 : Spring 시작
Project/TIL, WIL

TIL(33) 21-11-03 : Spring 시작

2021. 11. 3. 23:30

Facts

✅ TDP Service를 Sam famework를 사용하여 Serverless로 배포

✅ Spring 프레임워크의 기본 레이어(Repository, Service, Controller) 이해

✅ JPA 이해

 

Findings

✏️  기본 레이어

사진 출처 : 내일배움캠프 스프링-1

스프링에서 서버를 개발할 때, 처리 과정을 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가 클래스가 아닌 인터페이스를 사용하는 이유

<상속>을 통해, 코드를 재사용한다면, 부모클래스를 상속받은 자식클래스에서는 부모 클래스의 모든 메서드를 그대로 사용할 수 있기에, 캡슐화를 위반한다. 또한, 원치않은 메서드들도 상속된다. 원치 않은 메서드도 상속되면 의도치 않은 버그도 발생시킬 수 있다.

<인터페이스>를 사용하면, 함수의 특징만을 정의하고 함수의 내용이 없기에 결합도가 낮다.

클래스의 기본틀(= 함수의 특징만을 정의한 명세)을 제공하여 정의된 메서드를 통해서만 코드를 재사용할 수 있기에, 개발자들에게 정형화된 개발을 할 수 있게 해준다.

 

📝 출처

 

[Spring] JpaRepository 이용

Spring Data JPA는 "JpaRepository"라는 기능을 사용하면 매우 간단히 데이터를 검색 할 수 있도록 된다. 그 기본적인 사용법을 설명한다. JpaRepository 인터페이스 생성 이전에 기본적인 데이터베이스 액세

araikuma.tistory.com

 

 

'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
    'Project/TIL, WIL' 카테고리의 다른 글
    • TIL(35) 21-11-05 : Spring은 고마운 친구
    • TIL(34) 21-11-04 : JPA를 이용하여 CRUD 기능 구현
    • TIL(32) 21-11-02 : Authentication 수정 완료
    • TIL(31) 21-11-01 : SAM 프레임워크로 서버리스 배포하기
    감사쟁이야
    감사쟁이야
    sunzero0116@gmail.com

    티스토리툴바