[Spring] 스프링 게시글 프로젝트 - controller,service,repository

이해찬·2023년 6월 30일

항해일지

목록 보기
15/35

23.06.30 - D+30, 3layer architectrue

기록양식 (TIL)
1. 사용 개념
2. 의문점 or 문제
3. 시도해 본 것들(+응용) or 삽질
4. 해결
5. 알게 된 점(회고)

1. 3LayerArchitectrue

Controller 의 코드를 유지보수와 수정 등이 용이하게 하기 위해서 ServiceRepository로 나누어서 관리

2. 문제

강의 예제와 비슷한 구조의 게시글을 만들기

강의 예제에서는 JdbcTemplate을 사용, 그 뒤에 수정하면서 JPA를 활용해서 분리

Jdbc의 사용률이 낮아 JPA방식으로 하는데, Jdbc로 작업하던걸 중간중간에

  • IoC(제어의 역전), DI(의존성 주입)
  • IoC Container 와 Bean
  • JPA
  • Entity
  • 영속성 컨텍스트
    등의 개념들이 나와서 각각의 찢어진 개념들을 설명하고 다시 메모장 프로젝트를 하는 식으로 진행하니,흐름을 쫓아갈 수가 없었다.

강의 예제에서는
1. Controller를 작성
2. Jdbc를 활용해서 Service , Repository 구현
3. 이후에 Jdbc 를 삭제하고, Jpa로 구현
4. 순서가 다시 Repository > Service > Controller 로 수정 구현

처음부터 예제를 만든다고 했을 때, Jdbc의 과정을 생략하며 바로 Jpa로 구현하려고 하니 너무 헷갈렸다.


3. 해결

강의를 반복해서 보며 클론코딩식으로 해결

  1. build.gradle의 dependencies 에 > JPA 설정과 MySQL implementation추가
  2. PostRepositoryinterface, extends JpaRepository로 JPA 불러오기
  3. Entityid값과 column으로 데이터 저장
  1. PostServicePostRepository를 외부로부터 주입받는 생성자를 설정하고, 각각의 ControllerMapping을 담당하는 메서드를 생성
  2. 각 메서드 안에 DB에 저장되는 부분을 PostRepository 랑 연계해서 의존성 낮추기
  3. 수정된 PostService 코드를 Controller에 삽입

build.gradle

Repository

Service

Contorller

Entity

게시글 코드 깃허브 링크

4. 코드리뷰 후 수정

  • 컨트롤러 비밀번호 조회 후, 수정 삭제 기능 추가
  • 비밀번호 필드 값 수정

5. 알게된 점

  • Request, param 등 각 요청에 대한 개념 이해 부족
  • Entity, 영속성, 테스트 하는 부분에 대한 이해 부족
  • IoC, DI / Bean 이해 부족
  • JPA 와 데이터베이스 간의 연결, Entity, Column 이해 부족

    받아쓰기 식의 코딩만 해와서 이 코드가 왜? 이렇게 일어나는가에 대한 근본적 이해 부족
    기본 개념 공부를 더 해야된다.

profile
디자인에서 개발자로

0개의 댓글