
데이터베이스(Database)란 데이터를 보관하기 위한 '상자'라고 할 수 있다.
이때 특정한 규칙을 적용해서 데이터를 정리하여 보관한다.
관계형 데이터베이스(Relational Database)는 데이터를 표 형식으로 표현하고, 여러 표에서 항목의 값 사이에 관계를 맺고 있는 데이터베이스를 말한다.
표를 테이블(Table)이라고 부르고 테이블과 테이블 간의 관계를 관계(Relationship)라고 한다.

출처: 링크텍스트
데이터베이스 안에서 실제로 규칙을 가진 데이터가 저장되는 상자이다.
위의 그림이 테이블의 예시이다.
테이블의 가로 행(row)을 레코드(record)라고 한다. 하나의 레코드가 하나의 데이터인 것이다.
테이블의 세로 열(column)을 칼럼(column)이라고 한다. 하나의 칼럼은 데이터의 각 요소가 된다.

데이터베이스를 조작하기 위한 언어이다.
Structured Query Language(구조화 질의어)이다. 표준화 되어 있어 다른 데이터베이스에서도 거의 같은 방법으로 조작한다.
영속적으로 데이터를 취급하는 4개의 기본적인 기능인 생성(Create), 읽기(Read), 갱신(Update), 삭제(Delete)를 뜻한다.
INSERT INTO 테이블명 (칼럼명, 칼럼명...) VALUES(값, 값, ...);
SELECT 칼럼명 FROM 테이블명;
UPDATE 테이블명 SET 칼럼명= 값 WHERE 갱신할 레코드를 특정하는_조건;
DELETE FROM 테이블명 WHERE 삭제할 레코드를 특정하는_조건
'실제 데이터를 담아두는 객체'
엔티티는 데이터베이스 테이블의 한 행(레코드)에 대응하는 객체이다. 엔티티의 필드는 테이블의 칼럼값에 대응한다.
엔티티를 사용할 때 기억해야할 3가지가 있다.
데이터베이스를 조작하는 클래스이다.
리포지토리를 생성하는 경우에는 반드시 인터페이스를 정의하고 구현해야 한다. 왜냐하면 리포지토리 인터페이스의 필드에 리포지토리 구현 클래스를 DI하여 특정 구현에 의존하는 것을 피할 수 있기 때문이다.
자바에서는 인터페이스를 구현한 클래스의 접미사에 'Impl'을 붙이는 경우가 많다.(implements의 약자)
O/R 매퍼(Object-relational Mapper)를 간단하게 설명하면 애플리케이션에서 사용하는 O(Object): '객체'와 R(Relational): '관계형 데이터베이스'의 데이터를 매핑하는 것이다.
미리 설정된 객체와 관계형 데이터베이스 간의 대응 관계 정보를 가지고 인터페이스의 데어터에 대응하는 테이블에 내보내거나 데이터베이스에서 값을 읽어 들여 인터페이스에 대입하는 작업을 자동으로 실행한다.

출처: 링크텍스트
O/R 매퍼이다. 스프링 데이터가 제공하는 CrudRepository를 상속해서 자동으로 CRUD를 지원하는 메서드를 사용할 수 있다.

