본문 바로가기

프로젝트/팀프로젝트 qp편7

팀 프로젝트 소개 이번 시간을 끝으로 인프런에서 만난 팀 프로젝트 qp편 포스팅을 마무리하려고 한다. 어떤 프로젝트를 했는지 이야기해보자!팀 프로젝트가 처음인 만큼 문제 해결 과정과 개인적인 회고를 블로그에 남기고 싶었다. 팀 활동하면서 느낀 점을 담은 이야기는 여기에 공유했다. 팀플을 하면서 어떤 점이 힘들었고, 다음에는 이렇게 해야겠다는 다짐도 적어두었다.프로젝트 소개 : qp(스터디 커뮤니티 웹서비스)함께 공부할 스터디 팀원을 모집하는 웹 서비스.태그로 원하는 스터디 방을 찾을 수 있고, 채팅을 통해 소통할 수 있는 웹 서비스 프로젝트다.Github팀 [qp] Github Link개발 기간시작 |   2024년 1월 8일 종료 |   2024년 2월 28일 (약 2개월)팀원 소개Backend김규리 | 테이블 설계 참.. 2024. 5. 15.
JPA와 테이블 설계 이번에는 스터디 프로젝트를 만들 때 JPA로 도메인 모델을 어떻게 구성하고 객체와 테이블을 어떻게 매핑했는지 정리하려고 한다. 모든 코드는 Github에 있으니 참고해주세요. 먼저 요구사항을 분석하고 도메인 모델과 테이블을 정리해보자. 요구사항 분석 핵심 요구사항은 다음과 같다. 회원은 스터디방을 개설할수 있다. 스터디방 개설할 때 여러가지 태그를 선택할 수 있다.User 사용자의 구분은 "미인증 사용자", "회원가입된 사용자", "관리자"로 나뉜다. UNAUTH(미인증), AUTH(인증), ADMIN(관리자)로 3가지 존재한다. 미인증 회원은 회원가입을 통해 로그인하여 AUTH로 변경할 수 있다. 회원가입할 때, 원하는 스터디 태그를 선택할 수 있다. 관리자는 BAN(정지) 권한으로 회원 관리를 할 수.. 2024. 3. 22.
SpringBoot 3.x 버전 QueryDSL 설정 이번 시간에는 프로젝트에서 JPA, Querydsl을 적용한 부분을 정리하고자 한다. 최근 스프링 부트 3.0 이상 버전이 나옴에 따라 바뀐 설정 내용을 함께 공유하려고 한다. 목차는 다음과 같다. Gradle 설정 Jpa Custom Respository 적용 1. Gradle 설정 개발환경은 다음과 같다. IntelliJ Spring Boot 3.1.1 Java 17 Gradle Lombok DB : MySQL 먼저 build.gradle을 열어 아래와 같이 Querydsl 관련 설정을 추가한다. plugins { id 'java' id 'org.springframework.boot' version '3.1.1' id 'io.spring.depende.. 2024. 3. 21.
JPA N+1 발생 케이스과 MultipleBagFetchException 해결책 Fetch Join을 사용하다 만나는 MultipleBagFetchException 문제에 대해 알아보고, 해결책에 대해 정리 해보자. 목차는 다음과 같다. 프로젝트 요구사항 문제 상황 연관객체 조회 N+1 문제를 해결하기 위해 Fetch Join 해결방안 첫 번째 방안 : Set으로 선언한다. 두번째 방안 : Hibernate default_batch_fetch_size 내가 선택한 방안 : Set 타입으로 변경하고 조회결과를 DTO로 반환 참고자료 회고 프로젝트 요구사항 (문제 상황을 말하기 전에, 나의 프로젝트에 Join 쿼리가 왜 필요한지 설명하고자 한다.) 스터디 방에 참여한 유저 정보(프로필 사진, 스터디 시간, 자신의 공부태그)를 조회해야 한다. 아이디어 구상단계에서 '크아' .. 2024. 3. 20.