
스프링으로 프로젝트를 진행할 때, 로컬에서 DB에 정상적으로 데이터가 저장되는지 확인하기 위해서 H2 DB를 가장 많이 사용한다. 이를 제대로 사용하기 위해서는 설정이 필요한데 이를 알아보자 build.gradle 해당 프로젝트가 gradle 프로젝트라고 가정하고 가장 먼저 해당 프로젝트에서 H2를 사용하기 위해 build.gradle에 의존성이 추가되어 있어야 한다. 이런식으로 의존성이 추가되어 있어야 한다. 이는 start.spring.io에서 애플리케이션을 생성할 때 추가할 수 있으며, 추가하지 않았을 경우 수동으로 추가한 후 build하여 사용할 수 있다. application.yml 프로젝트에 H2 DB가 추가되었다면 이를 사용하기 위한 설정이 필요하다. 이는 application.yml에서 추..
영속성 (Persistence) 개발을 공부하다보면 영속성이라는 단어를 자주 접할 수 있다. 예를 들어 JPA 영속성 컨텍스트가 있다. 이러한 영속성이 뭔지 쉽게 말하자면 다음과 같다. 데이터를 생성한 프로그램이 종료되어도 사라지지 않는 데이터의 특성 조금 더 쉽게 설명하자면 영속성이 없는 데이터는 메모리에서만 존재하기 때문에 프로그램 종료 시 모두 증발한다. 그렇기 때문에 파일이나 데이터 베이스같은 곳에 저장하여 영속성을 부여하면 프로그램이 종료되어도 데이터가 날아가지 않는것을 의미한다.

Redis Redis는 대표적인 오픈 소스 기반의 비관계형 데이터 베이스 관리 시스템으로 Key-Value 구조를 가지며, 인메모리 데이터 구조를 가진 저장소이다. Redis는 인메모리 데이터 구조를 갖기 때문에 DB로 사용되기 적합하지 않다. 하지만 왜 인기있는 것일까? 그 이유는 다음과 같다. 일반적인 데이터 베이스는 데이터를 물리 디스크에 직접 쓰기 때문에 서버에 문제가 생겨도 데이터 자체가 소실되지 않는다. 하지만 데이터를 조회할 때마다 데이터 베이스에 접근을 해야하므로, 사용량이 급격하게 증가한다면 데이터 베이스에 과부하가 걸려 서비스가 느려지거나 심한 경우 다운될 수 있다. 그렇기 때문에 어느정도 규모가 있는 서비스에서는 캐시 서버(Cache Server)를 사용한다. 요청이 들어왔을 때 데이..

JOIN JOIN은 SQL문에서 가장 중요한 부분이다. SQL문에서 두 개 이상의 테이블을 공통된 열을 기준으로 결합하는데 JOIN문을 사용한다. 기본 구조는 다음과 같다. SELECT column_name(s) FROM table1 OO JOIN table2 ON table1.column_name = table2.column_name; OO값에는 내가 테이블을 조인할 방식 (Inner, Left, Right, Full)등이 들어간다. 조인할 방식에 대해 설명하자면 다음과 같다. (INNER) JOIN : 가장 많이 사용되는 JOIN으로서 JOIN이라 하면 INNER JOIN을 생각하면 된다. 두 테이블에서 일치하는 값이 있는 레코드를 반환한다. LEFT (OUTER) JOIN : 왼쪽 테이블의 모든 레..
UPDATE SQL문에서 테이블의 기존 값을 변경하기 위해서는 UPDATE를 사용한다. 기본 구조는 다음과 같다. UPDATE A SET B = C WHERE D; A 값에는 테이블명, B 값은 컬럼명, C 값은 변경하려는 필드 값 마지막 WHERE 절이 들어간 D 값은 변경해야하는 값을 지정한다. 이때 WHERE 절을 생략하게 되면 테이블의 모든 값이 변경되므로 반드시 기재해야한다.
NULL 비어있는 값을 찾기 위해선 NULL 명령어를 사용한다. 이때 NULL 값은 0이나 공백이 될 수 없으며 완전히 비어있는 필드 값을 의미한다. IS NULL 비어있는 값을 사용하기 위해 작성한다. SELECT A FROM B WHERE A IS NULL; 여기서 A 값에 컬럼 명 B 값에 테이블 명이 들어간다고 가정했을 때, A 컬럼의 값이 NULL인 모든 필드 값을 선택할 수 있다. IS NOT NULL IS NULL과는 반대로 비어있지 않은 값을 사용하기 위해 작성한다.
INSERT INTO INSERT INTO는 테이블에 새로운 데이터를 추가할 때 사용된다. INSERT INTO A (B,C) VALUES (D,E); 기본 구조는 다음과 같으며 A 값에는 삽입하고자 하는 테이블 명 B와 C 값은 각각 D, E 값을 넣고싶은 컬럼명이 들어간다. 컬럼명은 생략이 가능하나 이 때 밸류 값의 순서에 주의해야 한다. 예를 들어 '과자'라는 테이블의 '초콜릿' 컬럼에 '초코칩쿠키'라는 값을 넣고싶다면 다음과 같이 쿼리를 구성하면 된다. INSERT INTO 과자 (초콜릿) VALUES (초코칩쿠키);
ORDER BY ORDER BY는 결과 값을 오름차순 또는 내림차순으로 정렬할 때 사용한다. 기본적으로 오름차순으로 정렬되며, 내림차순으로 정렬하기 위해서는 뒤에 DESC를 넣어주면 된다. SELECT A FROM B ORDER BY C; 이런식으로 코드를 작성하게 되면 B 테이블에서 A값들을 선택하고 C 값 기준으로 정렬한다. 또한 여러 조건을 조합하여 사용할 수 있다. SELECT A FROM B ORDER BY C, D; B 테이블에서 A 값을 선택하고 C 값 및 D 값으로 오름차순 정렬한다. SELECT A FROM B ORDER BY C, D DESC; B 테이블에서 A값을 선택하고 C 값 기준 오름차순, D 값 기준 내림차순으로 정렬한다.