크리스마스에 시작한 클라우드 2기가 어느 덧 한달이 다 되어간다. 코드를 직접 작성하여 제출하고 채점받는 앨리스 플랫폼에도 어느정도 익숙해졌다. 특히 이번 주에 수백번 sql문을 실행해보면서 머리로 안다는 것과 손가락 끝에서 나오는 바이브의 차이를 확실히 알 수 있었다
JPA(Java Persistence API)와 같은 ORM(Object Relational Mapping)을 사용할 경우 연관관계 설정은 데이터베이스와 객체지향 프로그래밍 언어 사이의 간극을 메우는 중요한 역할을 한다. 관계를 사용하면 연관된 엔티티의 정보를 쉽게 추
N+1 문제란 어떤 명령을 실행하기 위해 하나의 쿼리가 필요하다고 생각했지만, JPA가 연관된 엔티티를 불러오는 과정에서 추가로 N개의 쿼리가 발생하는 현상을 말한다. JPA의 기본 fetch 전략 JPA에서 엔티티 간 관계를 맺을 때, 관련된 엔티
프로젝트를 진행하면서 공간 상세 유형이 추가로 선택할 때마다 검색 조건에 추가하고 싶었다. JPQL로 이를 구현하고 싶었지만, 상세 타입이 하나만 있거나 아예 없거나 이 두가지 경우만 처리할 수 있었다. 세부 사항이 추가될 때마다 서비스 로직에서 분기 처리를
JOIN 두 개 이상의 테이블을 연결하여 데이터를 출력하는 명령어를 말한다. JOIN 연산자를 이용해 관련 있는 컬럼 기준으로 행을 합치는 연산이다. 1. 내부 조인(Inner Join) 두 테이블 간 교집합을 반환한다. Inner를 생략할 수 있다.
관계 대수 관계형 데이터베이스 관리 시스템에서 데이터를 조회하기 위한 수학적인 언어를 관계 대수라고 한다. 즉 원하는 데이터를 얻기 위해 What(무엇)을 설명하고, How(어떻게)에 대한 구체적인 처리 과정은 DBMS(데이터베이스 관리 시스템)가 결정한다. 일반 집합
객체 지향으로 도메인 모델을 구현할 때 주로 사용하는 ORM 기법은 도메인 상태 변경 기능을 구현하는 데는 적합하지만, 주문 상세 조회 화면처럼 여러 애그리거트에서 데이터를 가져와 출력하는 기능을 구현하기에는 고려할 게 많아 구현을 복잡하게 한다.구현 복잡도를 낮추는
name에 index가 걸려있다면 full scan보다 더 빨리 데이터를 찾아낼 수 있다. 인덱스는 빠르게 조회, 정렬(order by)하거나 그룹핑(group by)하기 위해 사용한다.만약 인덱스가
MySQL 서버는 사람의 머리 역할을 하는 MySQL 엔진과 손발 역할을 담당하는 스토리지 엔진으로 구분한다. 스토리지 엔진은 핸들러 API를 이용해 MySQL 엔진과 데이터를 주고 받는다.클라이언트(JDBC, ODBC, ...)와 MySQL 서버 간 연결을 관리하는
트랜잭션이란 작업의 완전성을 보장해 주는 것이다. 하나의 논리적인 작업을 모두 완전하게 처리하거나 처리하지 못할 때 원 상태로 복구하여 일부만 적용되는 현상을 만들어주지 않게 한다.아래는 트랜잭션과 관련해서 헷갈릴 수 있는 개념이다.잠금(Lock)은 동시성을 제어하기
전체 코드 링크:특정 경쟁 조건을 만족 시키기 위해 sleep으로 조정한 코드가 있습니다. 운영체제, 컴퓨터 사양, 실행 상태 등에 따라 쓰레드 스케줄링이 달라 다르결과가 나올 수 있는 점 참고해 주세요.변수나 자료구조 같은 공유 자원에 접근하는 코드의 일부분여러 쓰레