이예진
수강평 작성수
-
평균평점
-
블로그
전체 2
2024. 10. 13.
0
인프런 워밍업 클럽 Backend - 2주차
~ 이번주 요약 ~엔티티(테이블에 맵핑되는 자바 클래스)를 개발하고, @Component, @PostConstruct 어노테이션을 통하여 db초기화.db와 상호작용하는 엔티티를 쉽게 관리하기 위해 각각의 엔티티의 리포지토리 개발 및 리토지토리 테스트 코드작성 후 확인.fetch join을 통한 리포지토리 성능 개선. (N+1 문제 해결 위함)presentation api, view controller를 만들어, api에 따라 어떤 것을 불러오고 실행시킬지 작성 (@RestController, @RequestMapping, @GetMapping, @Controller 등 사용)엔티티를 서비스 내부적으로만 사용하고, 외부로 노출되는 것은 dto로 하기위해, dto개발.도메인의 기능들을 활용하여 프레젠테이션 레이어에 필요한 db 조회, 저장 같은 기능들을 한번 더 랩핑을 해서 사용하는 그런 목적을가진 레포지토리 개발. (프레젠테이션 레이어에 필요한 기능들을 이 레포지토리에 묶어가지고 관리하도록 한다.)각각의 페이지에서 사용할 수 있도록 비즈니스 로직을 처리할 수 있도록 서비스 어노테이션을 사용해 서비스를 개발.그 서비스 코드가 잘 작동하는지 확인하기 위해 테스트 코드 작성 및 확인. ~ 추가로 더 학습하고 익혀야 할 것들 ~퍼사드 패턴 - 복잡한 시스템을 단순화하여 클라이언트가 쉽게 접근할 수 있도록 인터페이스를 제공하는 디자인 패턴DTO - 데이터 트랜스퍼 오브젝트. 테이터를 담는 통 같은 역할을 하는 자바객체.두개의 레포지토리의 차이 -엔티티와 관련된 데이터 접근 작업을 수행하며, 데이터베이스와 상호작용 할 수 있는 레포지토리 - repository 파일 내의 kt코드들다양한 레포지토리의 필요한 기능들을 한번에 묶어서 관리하도록 함. 복잡한 데이터 액세스 로직 단순화하는 퍼사드 패턴 적용하여 관리 쉽도록 하기위한 레포지토리 - PresentationRepository.ktDataInitialier.kt 기능 - 스프링 애플리케이션이 실행될 때 특정 테스트 데이터를 데이터베이스에 초기화하는 역할. 스프링 프로파일이 "default"로 설정된 경우에만 이 클래스가 동작.주요기능으로는 프로파일 기반실행(@Profile(value = ["default"])), 의존성주입, 초기화 작업(@PostConstruct), 테스트 데이터 저장, 개발/테스트 환경에서의 사용으로 구성.테스트 데이터 저장에서는 성과, 소개, 링크, 경험, 기술, 프로젝트 등의 데이터를 리스트로 생성하고, 각각의 JPA 레포지토리를 이용해 데이터베이스에 저장. 여러 엔티티들을 연관 지어, 더 복잡한 객체 관계도 초기화(Experience와 ExperienceDetail, Project와 ProjectDetail 및 ProjectSkill 등). 각각의 코드의 존재 이유(?), 기능을 알아야함. (전체적인 작동방식, 상호작용)후에 프로젝트를 하기 위해선 각각의 어노테이션에 대한 기능을 익혀야 할 것 같다. (아직도 너무나 헷갈림...) ~ 미션 ~계획해뒀던 주요 기능에 맞게 api설계회원가입, 로그인, 로그아웃, 캐릭터 등록 - post회원 탈퇴, 캐릭터 삭제 - delete캐릭터 수정 - put캐릭터 검색, 보유 캐릭터 수 확인 - get(자세한건 깃허브 참고 - https://github.com/Dalrae03/my-character-collection)

2024. 10. 06.
0
인프런 워밍업 클럽 Backend - 1주차
~ 이번주 요약 ~웹이 운영되는 구조, 웹프레임워크와 spring, HTTP와 API, 데이터베이스 구조, JPA, ORM 등 백엔드에 필요한 기초 내용 학습 ~ 추가로 더 학습하고 익혀야 할 것들 ~스프링 Bean - 스프링에서 관리되는 객체, 자바 클래스의 인스턴스. 스프링 컨테이너가 주체가 됨. (제어의 역전, IoC)의존성 주입 - Bean에서 다른 Bean을 사용할 경우(의존하는 경우), 스프링 컨테이너에서 의존성을 주입해줌. 한 객체가 사용하는 다른 객체를 객체 내부에서 직접 만들지 않고, 외부에서 주입받아서 사용하는 방법. (약간 상속 같은 느낌)스프링이 실행 될 때 컴포넌트 스캔과정을 걸쳐 Beam으로 지정된 클래스들의 객체를 모두 만들어둠. 의존성을 주입 받는 방법은 3가지가 잇는데, 생성자 주입 방식을 권장.관계형 데이터베이스의 구조 (1:N이란 무엇인가- 하나가 여러개의 데베속성? 종류? 를 가질 수 있다는 소리같은데 맞나... , N:M은 무엇이고 어떻게 만드는가)JPA - 자바의 객체를 관계형 DB의 테이블로, 그 반대로 변환 해주는 기능을 하는 맵핑을 해주는 라이브러리ORM - 객체 관계 매핑, 객체지향 프로그래밍의인스턴스와 관계형 뎅터베이스를 매핑 해주는 기술, 각 테이블들이 갖는 관계까지 이용하여 DB를 좀 더 쉽게 다룰 수 있도록 기능 제공코틀린 코드 (작성한 것과 주석, 필기로 다시 어떤 코드가 무슨기능을 하는지 익힐 필요가 있음...) => 코드가 흘러가는 전체적 흐름을 파악하여 각각의 코드가 무슨 기능을 하고, 기초 명령어를 알아야 두어야 할 것 같다...다음주에 이번에 알듯말듯한게 확실히 잡혔으면 좋겠지만 그렇지 않다면... 주말에 시간을 추가적으로 내야할 것 같다... ~ 미션 ~한 명의 유저는 여러개의 캐릭터를 가질 수 있다. (-> 매칭 테이블을 따로 만들어 두었다)한 명의 유저는 캐릭터를 가질 수도 있고, 안 가질 수도 있다.하나의 캐릭터는 여러개의 키워드를 가질 수 있다. (-> 매칭 테이블을 따로 만들어 두었다)하나의 캐릭터는 키워드를 가질 수도 있고, 안 가질 수도 있다.여러 캐릭터가 똑같은 키워드를 가질 수 있다. (-> 따라서 하나의 테이블로 만들어 두었다)처음에는 유저id와 캐릭터 id로 매칭하여 PK를 하려했으나, 최소성에 어긋나기도 하고, 하나의 칼럼을 늘려도 데이터베이스의 크기에 큰 영향을 줄 것 같지않아, 두 테이블을 매칭시키는 테이블(My Character, Character Keyword)에 따로 각각 PK를 설정해두었다.




