전체 글

술어논리와 관계형 모델 (DB 스터디 2주차)
"관계형 데이터베이스 실전 입문 - 오쿠노 마키아"를 읽으며 매주 스터디 진행 2.1 술어논리와 관계형 모델 명제와 공리 명제 : 어떤 사물의 참/거짓 판단 방법 정리 : 증명을 통해 참이 밝혀진 것 공리 : 증명없이 참으로 받아지는 명제 여러 개의 명제를 통해 공공적으로 올바르다고 정한 정리 = 공리 공리로 정의된 명제끼리는 모순 X 공리의 집합 = 공리계, 모순이 없는 완전성 양화논리 명제를 이용해 모든 것을 참/거짓 판단 불가능 → 양화논리의 등장 집단을 대상으로 참/거짓을 묻는 것 양화논리의 두가지 종류 "어떤 집단의 요소 전체가 어떠한 성질을 충족하는가?” → 범용정량자(∀) “어떤 집단의 요소는 어떠한 성질을 충족하는 것이 존재하는가?” → 존재정량(∃) 술어논리 기존 집합 → 새로운 집합의 ..

SQL과 관계형 모델 (DB 스터디 1주차)
"관계형 데이터베이스 실전 입문 - 오쿠노 마키아"를 읽으며 매주 스터디 진행 1.2 관계형 모델 관계형 모델 데이터 모델 (Data Model) = 데이터의 표현 방식 ex) Key-Value 이용한 데이터 표현 모델, 관계형 모델 관계형 모델 : 실제 세계 데이터 → “관계(Relation)" 개념 표현 모델 릴레이션 = SQL 테이블, 제목(데이터베이스 스키마, 컬럼 집합) + 본체 제목 : 속성이 0개 이상 모인 집합 (이름 + 데이터 타입) 본체 : 속성값의 집합, 튜플의 집합, 제목과 연관된 속성값을 가짐 관계형 모델 VS SQL 관계형 모델 SQL 릴레이션 테이블 튜플 행 속성 컬럼 집합 집합 = 요소의 모임 [조건] 1. 요소 자체로 요소의 집합 포함 여부 파악 가능해야함 → 집합의 성질에..

Spring Data Jpa
EntityManager를 이용해 CRUD를 작성해보면 도메인에 상관없이 중복되는 로직이 발생한다. public Team save(Team team) { em.persist(team); return team; } public Optional findById(Long id) { Team team = em.find(Team.class, id); return Optional.ofNullable(team); } public Member save(Member member) { em.persist(member); return member; } public Optional findById(Long id) { Member member = em.find(Member.class, id); return Optional.of..
![[백준, Java] 2623번 : 음악프로그램](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRgS4i%2FbtrJlFSt9pQ%2Fo3sF1WTfUsmRPXvjiJJZA0%2Fimg.gif)
[백준, Java] 2623번 : 음악프로그램
🔗 문제 링크 https://www.acmicpc.net/problem/2623 😮 문제 해결 방법 위상 정렬을 이용해 서로의 순서를 구해준다. 입력에 대해 그래프를 생성한다. 입력에 대해 순서에 따라 indegree 배열의 개수를 카운팅해준다. 위상 정렬을 이용해 순서를 리스트에 담아준다. 리스트 사이즈가 N보다 작은 경우 순서를 보장할 수 없는 경우 → 0을 반환 그 외 순서 리스트를 반환해 출력한다. 🚩 Java 코드 package com.second.algorithm.baekjoon; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public ..
![[프로그래머스, Java] 합승 택시 요금](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOfZu0%2FbtrJlph3AgA%2FVf9wIDAKiAgPXGr3183xQk%2Fimg.gif)
[프로그래머스, Java] 합승 택시 요금
🔗 문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/72413 😮 문제 해결 방법 최단 거리 알고리즘을 적용하는 것이 문제의 키포인트이다. 모든 도시로부터 출발해 모든 도시로 도착하는 최단 거리를 구해준다. 최단 거리를 구하는 방식은 크게 두가지가 있다. (무방향 양수 그래프 기준) 하나의 정점 기준 최단 거리구하기 → 다익스트라 알고리즘 : 모든 도시에 대해 구해야하므로 for문을 통해 모든 최단 거리를 구한다. 모든 정점 기준 최단 거리 구하기 → 플로이드 워셜 알고리즘 모든 정점에 대한 최단거리를 구하는 알고리즘은 플로이드 워셜을 일반적으로 사용하기 때문에 플로이드 워셜 알고리즘을 통해 문제를 해결한다. (다익스트라 이용시 시간초과 ..

JPQL 중급
경로 표현식 .을 찍어 객체 그래프를 탐색하는 것이다. 연관 필드 : 연관관계를 위한 필드 단일 값 연관 필드 : @XtoOne 대상이 엔티티이다. 컬렉션 값 연관 필드 : @XToMany 대상이 컬렉션이다. 상태 필드는 단순히 값을 저장하는 필드이며, 엔티티가 아니기 때문에 더 이상 탐색이 불가능하고 탐색의 종점이다. class Member { private String username; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "TEAM_ID") private Team team; @OneToMany(mappedBy = "member") private List orders = new ArrayList(); } // jpql m.username ->..

페치 조인 (Fetch Join)
JPQL에서 성능 최적화를 위해 제공하는 기능이다. 연관된 엔티티나 컬렉션을 한 번의 SQL로 모두 조회하는 기능이다. join fetch를 이용한다. // jpql select m from Member m join fetch m.team // SQL select m.*, T.* from Member m inner join team t on m.team_id = t.id List resultList = em.createQuery("select m from Member m", Member.class).getResultList(); for (Member member1 : resultList) { System.out.println("member1.getUsername() = " + member1.getUser..

2022 상반기 회고
벌써 8월이다. 7월 중순쯤 2022년 상반기를 돌아보면서 노션에 회고록을 작성했었지만, 이제야 글을 올리게 되었다. 🐾 나의 첫 사이드 프로젝트! 막상 퇴사를 하고 나니 정말 막막하고 막연했다. 대학교를 졸업하자마자 운이 좋게 첫 번째 지원한 기업에 바로 합격해 입사하게 된 나로서는 “회사가 원하는 개발자"가 되기 위해 어떤 공부를 하고 어떤 기술을 습득해야 하는지 너무나도 어려웠다. 뭐라도 해보자는 마음에 다른 회사에 다니고 있는 프론트엔드 개발자 지인과 취업을 준비 중인 지인에게 사이드 프로젝트를 해보자고 제안했고 지인들도 경험해 보고 싶은 기술이 있어서 프로젝트에 적용해보고 싶다고 했다. 나도 예전부터 기술 블로그나 유튜브를 보면서 MSA 아키텍처에 관심이 생겨 기회가 되면 공부해보고 싶은 마음이..