본문 바로가기

분류 전체보기502

3. 요구사항 정의 및 개발 명세서 작성 0. 요구사항 정의 및 개발 명세서 작성 - 요구사항과 개발 명세서 작성은 가장 구체적이면서도 귀찮은 과정이다. - 머리 속에만 존재하던 추상적 아이디어를 현실 세계에 꺼내놓는 작업이기 때문이다. - 웹 애플리케이션 사이가 어떤 모습으로 완성될지 기대된다. - 동시에, 이 많은 작업을 나 혼자서 감당할 수 있을지도 의문이다. - 요구사항 명세서는 다음과 같은 구성으로 되어있다. → sheet 1: 페이지 구성 → sheet 2: 세부 기능 명세 → sheet 3: 개발 과정 타임라인 - 아래의 링크를 통해서 요구사항 명세서를 확인할 수 있다. - 앞으로 해당 문서에서 계속하여 변경사항 등을 업데이트할 예정이다. https://docs.google.com/spreadsheets/d/1BZaCrvZ1CDQf.. 2022. 6. 11.
1. 로고 제작기 0. 로고를 위한 준비 a) 로고란 무엇인가? - 로고는 브랜드이자 정체성을 그림으로써 한눈에 보여주는 역할을 한다. - 그렇다면 사이의 서비스를 한마디로 표현하면 되지 않을까? - 그 한마디를 그림으로 표현하면 로고가 될 것이라 확신했다. b) 정의하기 - 사이의 핵심 서비스는 사람 간의 관계를 측정해주는 것이다. - 그렇다면 "관계를 측정하는 것"을 그림으로 표현하면 로고 완성이다. - 근데... 어떻게 그려야 할까? c) 키워드 정하기 - 서비스를 정의하면서 관계와 측정이라는 키워드가 등장하였다. - 각 키워드를 그림으로 표현하기 위해서 비유적인 표현이나 빗대어 사용할 수 있는 물건을 떠올려보았다. → 관계: 거리(distance), 사회적 활동, 공간 → 측정: 수치화, 그래프, 줄 자(ruler.. 2022. 6. 9.
0. 프로젝트 소개 0. 개요 - 본 카테고리에는 포트폴리오로 사용될 프로젝트의 개발 일지가 작성될 예정입니다. - 본 포스팅은 전반적인 프로젝트 소개입니다. 0. 개발 동기 a) 해결하려는 문제 및 비즈니스 - 저는 사람을 만나는 것에 에너지를 소비하는 성향으로, 사람 간의 일을 잘 기억하지 못합니다. - 그러나 사소한 기억을 공유하는 것이야말로 관계를 발전시키는 방법입니다. - 이와 같은 이유로 만남을 기록하고 리뷰하여 관계를 더욱 편리하게 관리할 수 있는 서비스를 만들게 되었습니다. 1. 사이(SAI) 소개 a) 사이의 뜻 - 사이는 너와 나의 사이에서 착안된 이름으로, 사람 간의 관계를 의미합니다. - SAI는 Social Activity Interpreter의 약자로, 사회 활동을 기반하여 관계를 해석함을 의미합니.. 2022. 6. 9.
Query DSL이란? 0. 개요 - 이번 포스팅은 Query DSL에 대해서 간략하게 알아볼 예정이다. - JPA를 조금 더 효율적으로 사용하고 싶다면 Query DSL에 대해서 알아보자. http://querydsl.com/ 2022. 6. 8.
Spring Data JPA란? 0. 개요 - 이번 포스팅은 Spring Data JPA에 대해서 간략하게 알아볼 예정이다. - JPA를 조금 더 효율적으로 사용하고 싶다면 Spring Data JPA에 대해서 알아보자. https://spring.io/projects/spring-data-jpa Spring Data JPA Spring Data JPA, part of the larger Spring Data family, makes it easy to easily implement JPA based repositories. This module deals with enhanced support for JPA based data access layers. It makes it easier to build Spring-powered ap.. 2022. 6. 7.
OSIV(Open Session In View) 0. 개요 - 지금까지 JPA 기본 개념에 대해서 알아보았다. - 이번 포스팅은 JPA의 마지막 개념인 OSIV에 대해서 알아보자. 1. OSIV(Open Session In View) a) OSIV 란? - Open Session In View란, 하이버네이트 또는 JPA를 지칭하는 이름이다. - JPA는 Open Entity Manager In View이라 불리기도 하는데, 관례상 OSIV로 통일하여 부른다. b) OSIV 사용 설정 - JPA를 사용하면 Spring에서 기본적으로 spring.jpa.open-in-view의 옵션 값을 TRUE로 설정한다. - 이는 OSIV 옵션을 사용한다는 의미로, JPA 프로젝트 빌드 시점에 다음과 같은 warn 로그에서 확인할 수 있다. c) OSIV의 기능 -.. 2022. 6. 7.
API 조회 성능 최적화 - 컬렉션(DTO 직접 조회) 0. 개요 - 이번 포스팅에서는 DTO를 직접 사용하여 컬렉션을 조회하는 방식에 대해서 알아보자. 1. DTO 직접 조회 준비 a) DTO 직접 조회의 의미 - 단일 조회 시 DTO를 직접 사용한 조회 방법과 동일하게 컬렉션도 DTO를 사용하여 직접 조회할 수 있다. - DTO 직접 조회 방식의 핵심은 Entity를 전혀 사용하지 않고 오직 DTO만을 이용하여 데이터를 받아오는 것이다. - 즉, Entity를 조회하고 그 데이터를 이용하여 DTO를 생성 및 반환하는 작업이다. - 언뜻 보면 DTO 변환 방식과 특별한 차이점을 못 느낄 수도 있다. - 그러나 DTO 직접 조회 방식은 API 메서드에서 오직 DTO만을 사용한다는 것이 특징이다. b) 준비 작업 확인 - 우선 DTO 변환을 이용한 조회 메서드.. 2022. 6. 4.
API 조회 성능 최적화 - 컬렉션(Fetch Join + 페이징 + Batch Size) 0. 개요 - 이전 포스팅에서 Fetch Join을 사용하면 페이징을 사용할 수 없다는 것을 배웠다. - 그러나 개발을 하다 보면 Fetch Join과 페이징이 함께 필요한 경우가 발생할 것이다. - 이러한 상황에서 어떻게 페이징을 구현할 수 있는지 알아보자. 1. Fetch Join + 페이징 사용 불가 a) 근본적인 이유 - Fetch Join은 일대다(= OneToMany) 조인에서 사용된다. - 일대다(= OneToMany) Join의 목적은 일(= One)을 기준으로 Join 하는 것이다. - 그러나 DB는 다(= Many)를 기준으로 Join 하므로 결과 데이터가 다(= Many)의 개수만큼 생성된다. - 이처럼 결과 데이터의 증가로 인해, 데이터의 순서가 뒤틀리게 되어 페이징을 사용할 수 없.. 2022. 6. 3.
API 조회 성능 최적화 - 컬렉션(Fetch Join, distinct) 0. 개요 - 이전 포스팅에서 DTO 변환을 이용한 컬렉션 조회 방법을 알아보았다. - DTO 변환 방법을 사용하여 컬렉션 조회 시, 다수의 SQL 문이 발행된다는 문제점을 확인하였다. - 이 문제를 해결하기 위해 Fetch Join을 이용한 컬렉션 조회 방법을 알아보자. 1. DTO 변환 + Fetch Join a) Fetch Join 쿼리 작성 - 우선 Fetch Join을 이용하는 쿼리를 작성해보자. - 쿼리는 다음과 같다. public List findAllWithItem() { return em.createQuery("select o from Order o " + "join fetch o.member " + "join fetch o.delivery " + "join fetch o.orderIte.. 2022. 6. 2.