인프런 워밍업 클럽 Backend - 2주차

인프런 워밍업 클럽 Backend - 2주차

~ 이번주 요약 ~

엔티티(테이블에 맵핑되는 자바 클래스)를 개발하고, @Component, @PostConstruct 어노테이션을 통하여 db초기화.

db와 상호작용하는 엔티티를 쉽게 관리하기 위해 각각의 엔티티의 리포지토리 개발 및 리토지토리 테스트 코드작성 후 확인.

fetch join을 통한 리포지토리 성능 개선. (N+1 문제 해결 위함)

presentation api, view controller를 만들어, api에 따라 어떤 것을 불러오고 실행시킬지 작성 (@RestController, @RequestMapping, @GetMapping, @Controller 등 사용)

엔티티를 서비스 내부적으로만 사용하고, 외부로 노출되는 것은 dto로 하기위해, dto개발.

도메인의 기능들을 활용하여 프레젠테이션 레이어에 필요한 db 조회, 저장 같은 기능들을 한번 더 랩핑을 해서 사용하는 그런 목적을가진 레포지토리 개발. (프레젠테이션 레이어에 필요한 기능들을 이 레포지토리에 묶어가지고 관리하도록 한다.)

각각의 페이지에서 사용할 수 있도록 비즈니스 로직을 처리할 수 있도록 서비스 어노테이션을 사용해 서비스를 개발.

그 서비스 코드가 잘 작동하는지 확인하기 위해 테스트 코드 작성 및 확인.

 

 

 

~ 추가로 더 학습하고 익혀야 할 것들 ~

퍼사드 패턴 - 복잡한 시스템을 단순화하여 클라이언트가 쉽게 접근할 수 있도록 인터페이스를 제공하는 디자인 패턴

DTO - 데이터 트랜스퍼 오브젝트. 테이터를 담는 통 같은 역할을 하는 자바객체.

두개의 레포지토리의 차이 -

  1. 엔티티와 관련된 데이터 접근 작업을 수행하며, 데이터베이스와 상호작용 할 수 있는 레포지토리 - repository 파일 내의 kt코드들image

  2. 다양한 레포지토리의 필요한 기능들을 한번에 묶어서 관리하도록 함. 복잡한 데이터 액세스 로직 단순화하는 퍼사드 패턴 적용하여 관리 쉽도록 하기위한 레포지토리 - PresentationRepository.kt

    image

DataInitialier.kt 기능 - 스프링 애플리케이션이 실행될 때 특정 테스트 데이터를 데이터베이스에 초기화하는 역할. 스프링 프로파일이 "default"로 설정된 경우에만 이 클래스가 동작.

주요기능으로는 프로파일 기반실행(@Profile(value = ["default"])), 의존성주입, 초기화 작업(@PostConstruct), 테스트 데이터 저장, 개발/테스트 환경에서의 사용으로 구성.

테스트 데이터 저장에서는 성과, 소개, 링크, 경험, 기술, 프로젝트 등의 데이터를 리스트로 생성하고, 각각의 JPA 레포지토리를 이용해 데이터베이스에 저장. 여러 엔티티들을 연관 지어, 더 복잡한 객체 관계도 초기화(Experience와 ExperienceDetail, Project와 ProjectDetail 및 ProjectSkill 등).

 

각각의 코드의 존재 이유(?), 기능을 알아야함. (전체적인 작동방식, 상호작용)

후에 프로젝트를 하기 위해선 각각의 어노테이션에 대한 기능을 익혀야 할 것 같다. (아직도 너무나 헷갈림...)

 

 

 

 

~ 미션 ~

계획해뒀던 주요 기능에 맞게 api설계

회원가입, 로그인, 로그아웃, 캐릭터 등록 - post

회원 탈퇴, 캐릭터 삭제 - delete

캐릭터 수정 - put

캐릭터 검색, 보유 캐릭터 수 확인 - get

(자세한건 깃허브 참고 - https://github.com/Dalrae03/my-character-collection)

댓글을 작성해보세요.

채널톡 아이콘