데이터베이스란?
데이터베이스(DataBase)란 데이터를 보관하기 위한 '상자'라고 볼 수 있다.
데이터베이스에서 데이터를 모을 때는 특정한 규칙을 적용 후 데이터를 정리해서 보관한다.
데이터베이스 = DB
관계형 데이터베이스란?
관계형 데이터베이스(Relational DataBase)는 데이터를 표 형식으로 표현하고, 여러 표에서 항목의 값 사이에 관계를 맺고 있는 데이터베이스를 말한다.
표 = 테이블(Table)
테이블과 테이블 사이의 관계 = Relationship
관계형 데이터베이스는 가장 일반적으로 사용되는 데이터베이스라 줄여서
RDB로 불린다.
PostgreSQL로 데이터베이스 확인 -> 생략
테이블이란?
위에서 테이블은 데이터를 보관하기 위한 상자라고 설명했지만,
데이터베이스 안에서 실제로 규칙을 가진 데이터가 저장 되는 상자라고 한다.
테이블은 데이터를 항목으로 해서 이차원 표 형식으로 정리해서 저장한다.
레코드와 칼럼
pdAdmin 4로 테이블 생성 -> 생략
SQL이란?
SQL은 데이터베이스를 조작하기 위한 언어이다.
정식 명칭 : Structured Query Language
CRUD란?
- 영속적으로 데이터를 취급하는 4개의 기본적인 기능의 앞글자를 따서 만든 단어이다.
CRUD 명령어, 구문
- Create : INSERT INTO 테이블명(칼럼명, 칼럼명...) VALUES(값, 값...)
- Read : SELECT 칼럼명 FROM 테이블명;
- Update : UPDATAE 테이블명 SET 칼럼명 = 값 WHERE 갱신할레코드를특정하는조건;
※ WHERE로 조건을 지정하지 않는 경우 모든 레코드가 대상이 된다.
- Delete : DELETE FROM 테이블명 WHERE 삭제할레코드를특정하는조건;
※ WHERE로 조건을 지정하지 않는 경우 모든 레코드가 대상이 된다.
테이블에 데이터 입력 -> 생략
엔티티란?
엔티티를 한마디로 표현하면 '데이터를 담아두는 객체'이다.
데이터베이스 테이블의 한 행(레코드)에 대응하는 객체이다.
엔티티의 필드는 테이블의 한 열(칼럼)에 대응한다.
엔티티는 실제 데이터를 담아 두는 개체이다. 사용할 때 다음 세 가지를 기억하자
- 클래스명 : 클래스명은 대응하는 데이터베이스의 테이블명으로 하는 경우가 많다.
- 데이터 베이스에 값 넘겨주기 : 데이터베이스에 값을 등록/갱신하는 경우에는 엔티티에 값을 넣어서 넘겨준다.
- 데이터베이스에서 값 가져오기 : 데이터베이스에서 값을 가져오는 경우에는 값을 엔티티에 넣어서 가져온다.
리포지토리(Repository)란?
Repository = 데이터베이스를 조작하는 class
리포지토리를 생성하려면 반드시 인터페이스를 정의하고 구현해야한다.
- 이유) 리포지토리 인터페이스의 필드에 리포지토리 구현 클래스를 DI하여 특정 구현에 의존하는 것을 피할 수 있기 때문이다.
참고) 자바에서는 인터페이스를 구현한 클래스의 점미사에 'Impl'을 붙이는 경우가 많다.(Impl = implements의 약자)
O/R 매퍼란?
간단하게 설명하면 애플리케이션에서 사용하는 O(Object) : '객체'와 R(Relational): '관계형 데이터베이스'의 데이터를 매핑하는 것이다.
O/R 매퍼는 미리 설정된 객체와 관계형 데이터베이스 간의 대응 관계 정보를 가지고 인터페이스의 데이터에 대응하는 테이블에 내보내거나
데이터 베이스에서 값을 읽어 들여 인터페이스에 대입하는 작업을 자동으로 실행한다.
스프링 데이터 JDBC란?
스프링 데이터 JDBC = O/R 매퍼
스프링 데이터가 제공하는 CrudRepository를 상속해서 자동으로 CRUD를 지원하는 메서드를 사용할 수 있다.
스프링 데이터 JDBC 프로그램 생성 -> 생략