Service
home
WOW Onboarding
home
🧩

[백엔드 정규 스터디 4주차 과제]

들어가기 앞서

스터디 영상

스터디 자료

[정규 백엔드 스터디] 4주차.pdf
722.5KB
안녕하세요~! 백엔드 파트리드 권찬입니다
모두 이번 주 스터디도 수고하셨습니다! 특히 이번 주는 처음 들어보는 개념들이 많이 나와서 놀라셨을 수도 있을 것 같습니다 하지만 JPA를 사용하려면 영속성 컨텍스트, 트랜잭션 모두 중요한 개념이다보니 이해가 안되신다면 언제든 DM으로 질문 주셔도 좋고, 인터넷과 GPT를 적극적으로 활용하셔서 꼭 숙지해주세요!
이번 스터디 내용을 간단하게 정리해보면 다음과 같습니다.
트랜잭션 = 데이터 조작하는 행위들에 대한 쪼갤 수 없는 큰 동작 단위. (@Transactional)
엔티티 매니저 = 스프링 어플리케이션과 데이터베이스의 직접 적인 소통을 대신 해주는 객체
영속성 컨텍스트 = 스프링 어플리케이션과 데이터베이스 사이에 존재하는 임시 엔티티 보관 공간
데이터 생성 = em.persist() ( = 영속성 컨텍스트에 신규 엔티티 객체 등록)
데이터 조회 = em.find() (= 데이터베이스에서 엔티티 객체 조회)
데이터 수정 = 조회한 엔티티 객체를 수정하면 트랜잭션이 끝날 때 알아서 반영
데이터 삭제 = em.remove() (= 영속성 컨텍스트 내 엔티티에 삭제 표시)
혹시 JPA와 관련하여 더 자세히 공부해보고 싶으시다면 김영한 강사님의 JPA 활용 강의와 이론 강의를 들어보시길 추천드립니다.

과제

이번 스터디 과제로는 지난 주에 완성한 엔티티 클래스(=테이블) 에 대해 CRUD 를 수행하는 레포지토리 계층 코드를 각각 만들어 봅니다.
예를 들어 지난 주 과제에서 제가 의도했던 엔티티 클래스는 Todo, Member, Friend 3가지 클래스인데요. 혹시 제 의도와 동일하게 만드셨다면 각 클래스에 대응하는 TodoRepository, MemberRepository, FriendRepository 를 만들어주세요.
(다른 엔티티가 존재한다면 그 엔티티에 맞는 레포지토리 계층도 작성해주세요)
이때 모든 CRUD 를 일단 구현해두어도 좋고, 필요한 기능만 구현하셔도 좋습니다. 필요한 기능만 골라서 구현하신다면 PPT 마지막에 있는 프로젝트 명세를 참고하셔서 구현해주세요.

목표

영속성 컨텍스트와 트랜잭션에 대한 이해
레포지토리 계층 작성

제출해야할 파일과 파일 경로

1.
week4 폴더에 wil.md 를 작성해주세요.
2.
레포지토리 계층 작성 (폴더 구조 예시 참고)
3.
레포지토리 계층 테스트 작성 (폴더 구조 예시 참고)

폴더 예시

week4/ └── wil.md todoapi/ └── main/ └──── java/ └────── com.example.todoapi/ └──────── todo/ └────────── Todo.java └────────── TodoRepository.java └──────── member/ └────────── Member.java └────────── MemberRepository.java └────── ... └── test/ └──── java/ └────── com.example.todoapi/ └──────── todo/ └────────── TodoRepositoryTest.java └──────── member/ └────────── MemberRepositoryTest.java └────── ...
YAML
복사
레포지토리 코드의 경우, 모든 CRUD를 다 구현해두셔도 좋고, 명세에 따라 필요한 CRUD만 구현하셔도 좋습니다.
각각의 레포지토리 기능에 대해 잘 동작하는지 검증하는 테스트 코드를 작성해주세요. 모든 레포지토리의 모든 CRUD를 검증하는 코드를 작성하는 건 너무 반복적인 일이니 일부만 코드로 검증하고, 나머지 레포지토리는 영상에서 한 것처럼 테스트가 종료되지 않게 한 뒤 데이터베이스 관리자 콘솔에서 눈으로만 확인해보셔도 좋습니다 :) 영상에서는 update, delete 와 같은 기능에 대해 ‘코드’ 로는 검증하지 않았는데요. 한번 기존의 검증 방법을 참고하여 update, delete를 어떻게 검증할 수 있을지 고민하고 코드로 작성해보세요. 이 과정에서 Assertions 라이브러리의 다양한 메서드를 알아보시면 좋을 것 같습니다 :)
힌트

혹시 너무 반복적이지 않았나요?

과제를 하다보면 똑같은 형태의 코드를 반복적으로 사용하고 있다는 느낌을 받으셨을 거라고 생각해요.
과제 이후에 여유가 되신다면 기본적인 CRUD 기능을 인터페이스 생성만으로 모두 제공하는 Spring Data JPA 에 대해 공부해보세요. 반복적인 코드 작성 작업에서 벗어나는 해방감을 느끼실 수 있을 거에요 ㅎㅎ

마감 기한

5/20 화요일 23:59 까지 제출해주세요.