Service
home
WOW Onboarding
home
🧩

[초급 백엔드 스터디 4회차 과제]

들어가기 앞서

모두 이번 주 스터디도 수고하셨습니다! 특히 이번 주는 처음 들어보는 개념들이 많이 나와서 놀라셨을 수도 있을 것 같습니다 하지만 JPA를 사용하려면 영속성 컨텍스트, 트랜잭션 모두 중요한 개념이다보니 이해가 안되신다면 여러번 돌려보시고, 추가로 더 찾아보시면서 꼭 숙지해주세요!
이번 스터디 내용을 간단하게 정리해보면 다음과 같습니다.
트랜잭션 = 데이터 조작하는 행위들에 대한 쪼갤 수 없는 큰 동작 단위. (@Transactional)
엔티티 매니저 = 스프링 어플리케이션과 데이터베이스의 직접 적인 소통을 대신 해주는 객체
영속성 컨텍스트 = 스프링 어플리케이션과 데이터베이스 사이에 존재하는 임시 엔티티 보관 공간
데이터 생성 = em.persist() ( = 영속성 컨텍스트에 신규 엔티티 객체 등록)
데이터 조회 = em.find() (= 데이터베이스에서 엔티티 객체 조회)
데이터 수정 = 조회한 엔티티 객체를 수정하면 트랜잭션이 끝날 때 알아서 반영
데이터 삭제 = em.remove() (= 영속성 컨텍스트에 엔티티 삭제 표시)
이제 스터디 과제에 대해서 간단하게 설명을 드릴게요!
이번 스터디 과제는 지난 주 완성한 각각의 엔티티 클래스 (=테이블) 에 CRUD 를 수행하는 레포지토리 계층 코드를 각각 만들어주시는 게 과제입니다!
제가 의도했던 엔티티 클래스는 Todo, Member, Friend 3가지 클래스인데요. 각각에 대해 TodoRepository, MemberRepository, FriendRepository 를 만들어주세요.
(다른 엔티티가 존재한다면 그 엔티티에 맞게 레포지토리 계층을 작성해주세요)
이때 모든 CRUD 를 다 구현해보셔도 좋고, 필요한 기능만 골라서 구현해보셔도 좋습니다. 필요한 기능만 골라서 구현하신다면 PPT 마지막에 있는 프로젝트 명세를 참고하셔서 구현해주세요.

과제

목표

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

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

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

폴더 예시

week5/ └── 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 기능을 인터페이스 생성만으로 모두 제공하는 SpringDataJPA 에 대해 공부해보세요. 반복적인 코드 작성 작업에서 벗어나는 해방감을 느끼실 수 있을 거에요 ㅎㅎ

마감 기한

다음 스터디가 시작하는 10/30 23:59 까지 제출해주세요.
모두 중간고사 화이팅하세요~!

제출 방법