본문 바로가기

전체 글502

6. 오류 해결 스토리 - Update/delete queries cannot be typed 0. 문제 설명 a) JPQL을 이용한 Update 쿼리 작성 - 회원 정보를 수정하기 위해서 다음과 같은 쿼리문을 작성했다. public int updateById(Long id, String name, String email, String password) { return em.createQuery("update Member as m " + "set m.name = :name, m.email = :email, m.password = :password where m.id = :id", Member.class) .setParameter("id", id) .setParameter("name", name) .setParameter("email", email) .setParameter("password", p.. 2022. 7. 30.
5. 오류 해결 스토리 - Join Table 접근과 영속 상태 0. 개요 - 프로젝트 사이의 백엔드를 개발하면서 겪은 다양한 문제의 발생 과정과 해결책을 찾아가는 사고 과정을 기록합니다. 1. 문제 설명 a) Entity 관계 - 프로젝트 사이는 3개의 Entity(Member, Event, Friend)로 구성된다. - Event와 Friend는 모두 Member_id를 외래 키로 사용한다. - 즉, Member를 기준으로 Event와 Friend 객체가 DB에 등록된다. - Event는 다수의 Friend 객체를 보유할 수 있고, Friend는 다수의 Event에 소속될 수 있다. - Event와 Friend는 ManyToMany의 관계를 가지며, 이는 Join Table 전략으로 관리한다. @Entity @Getter public class Event { @I.. 2022. 7. 27.
최단거리 개념 및 문제 접근 방법 0. 개요 - 최단 거리 알고리즘은 그래프 탐색 알고리즘 중 하나이다. - 최단 거리 알고리즘의 종류와 개념 그리고 문제 접근 방법에 대해서 알아보자. 1. 최단 거리 개념과 종류 a) 최단 거리의 의미 - 최단 거리 문제에서 최단 거리는 다음 2가지 경우 중 하나에 해당한다. → 지나온 간선(edge)의 개수가 가장 적은 경로를 찾는 경우 (가중치가 없는 그래프) → 지나온 간선(edge)의 가중치(weight) 합이 가장 작은 경로를 찾는 경우 (가중치가 있는 그래프) b) 최단 거리의 종류 - 최단 거리 문제는 기본적으로 시작점과 도착점이 주어진다. - 시작점과 도착점을 기준으로 최단 경로(간선의 개수 또는 간선 가중치의 합)를 구하는 것이 문제의 핵심이다. - 시작점과 도착점의 구성 방식에 따라서.. 2022. 7. 18.
DFS/BFS 개념 및 문제 접근 방법 0. 개요 - DFS와 BFS는 대표적인 그래프 탐색 알고리즘이다. - DFS와 BFS가 어떻게 다른지, 언제 사용되는지 알아보자. 1. DFS(Depth First Search) a) DFS의 탐색 방법 - DFS는 다음과 같은 탐색 순서를 갖는다. - DFS는 하나의 방향을 결정하면 그 방향을 따라 끝까지 도달한다. ▶ 트리의 경우, 왼쪽에 위치한 노드를 우선적으로 탐색한다. ▶ 그래프의 경우, 가중치 또는 특정 기준을 따라 탐색 방향의 우선순위를 결정한다. - 위의 그림을 토대로 DFS는 다음과 같은 탐색 순서를 갖는다. ▶ 0번을 시작으로 왼쪽에 위치한 노드를 우선적으로 탐색한다. (0 ~ 3번 노드로 탐색) ▶ 3번 노드가 끝이므로 이전 단계로 돌아간다. (1번 노드로 돌아감) ▶ 1번 노드에서.. 2022. 7. 5.
4. DB 구조 설계 - ERD 0. 개요 - 프론트 개발을 어느정도 완료하고 이제 백엔드 개발을 준비하고 있다. - 백엔드 개발의 시작을 ERD 제작으로 선정하여 ERD를 그려보았다. - ERD를 작성해보니 백엔드를 개발하면서 풀어야하는 문제점을 몇가지 발견하였다. 1. Entity 소개 - 프로젝트 SAI는 다음과 같은 Entity로 구성된다. a) User Table - User는 SAI 서비스에 가입한 회원의 정보를 관리하는 테이블이다. - 회원 가입 시 작성한 정보가 User Table에 입력된다. - User Table의 구성은 다음과 같다. id(PK) - 자동 증감을 사용한다. email - 로그인 시 사용할 이메일 주소 / 필수 값 / 유효성 검증 필요 password - 로그인 시 사용할 비밀번호 / 필수 값 / 유효.. 2022. 6. 29.
DP(동적 계획법) 개념 및 문제 접근 방식 0. 개요 - DP(동적 계획법)은 어떤 공식이나 특정 형태가 아닌 방법론에 가까운 개념으로써의 알고리즘이다. - 그래서 이론적으로 DP를 이해하기는 쉽지만, 문제에 적용하기가 쉽지 않다. - 필자가 그랬기에, DP 개념과 문제 접근 방식을 이해하기 쉽게 설명해보려 한다. 1. DP(동적 계획법)란? - DP에 대해 검색해보면 다음과 같은 대표적인 표현이 등장한다. → "하나의 큰 문제를 작은 문제로 나누고, 그 작은 문제를 해결하여 큰 문제의 답을 도출해내는 기법" → "작은 문제를 해결하는 과정에서 중복되는 연산을 수행하지 않는 기법" - 도대체 이게 무슨 말일까? - 피보나치 문제를 예시로 DP의 특징과 문제 접근 방식에 대해 알아보자. 2. DP 문제 접근 방식 - 피보나치 문제를 이용하여 DP .. 2022. 6. 20.
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.