1. 데이터베이스란?
◉ 데이터베이스는 데이터를 매우 효율적으로 보관하고 꺼내 볼 수 있는 곳!
많은 사람들이 안전하게 데이터 사용 및 관리 가능
1) 데이터베이스 관리자, DBMS
▪︎ 데이터베이스 관리자, DBMS
- DBMS( Database Management System ) : 데이터베이스를 관리하기 위한 소프트웨어
→ 관리 특징에 따라 관계형, 객체-관계형, 도큐먼트형, 비관계형 등으로 분류
◉ 관계형 DBMS
▪︎ 관계형 DBMS = RDBMS ( Relational DBMS ) : 테이블 형태로 이루어진 데이터 저장소
▪︎ ( 예시 ) 회원 테이블
회원 테이블 | ||
ID | 이메일 | 나이 |
1 | a@test.com | 10 |
2 | b@test.com | 20 |
3 | c@test.com | 30 |
- 행 : 데이터 1, a@test.com, 10 한 줄
열 : ID, 이메일, 나이와 같은 구분
◉ H2, MySQL
▪︎ H2
- 자바로 작성되어 있는 RDBMS
- 스프링 부트가 지원하는 인메모리 관계형 데이터베이스
- 데이터를 다른 공간에 따로 보관하는 것이 아니라 애플리케이션 자체 내부에 데이터를 저장
→ 애플리케이션을 다시 실행하면 데이터 초기화됨 ( 개발 시 테스트 용도로 많이 사용 / 실제 서비스에는 사용하지 않음 )
▪︎ MySQL
- 실제 서비스에 많이 사용
◉ 꼭 알아야 하는 데이터베이스 용어
① 테이블
- 데이터베이스에서 데이터를 구성하기 위한 가장 기본적인 단위
- 테이블 : 행과 열로 구성 / 행은 여러 속성으로 구성됨
② 행
- 테이블의 구성요소 중 하나로, 테이블의 가로로 배열된 데이터의 집합을 의미
- 반드시 고유한 식별자인 기본 키를 가짐
- 행을 레코드라고 부르기도 함
③ 열
- 테이블의 구성요소 중 하나로, 행에 저장되는 유형의 데이터
- 각 요소에 대한 속성으로 무결성을 보장함
( 나이 속성 : 숫자 유형 → 나이 열에는 문자열이 들어갈 수 없기 때문에 데이터에 대한 무결성 보장 )
④ 기본키
- 행을 구별할 수 있는 식별자로, 이 값은 테이블에서 유일해야 하며 중복 값을 가질 수 없음
- 데이터를 수정하거나 삭제하고, 조회할 때 사용되며 다른 테이블과 관계를 맺어 데이터를 가져올 수 있음
- 기본키의 값은 수정되어서는 안 되며, 유효한 값이어야 함( Null 값 허용 안됨 )
⑤ 쿼리
- 데이터베이스에서 데이터를 조회하거나 삭제, 생성, 수정같은 처리를 하기 위해 사용하는 명령문
- SQL이라는 데이터베이스 전용 언어를 사용
2. ORM이란?
◉ ORM( object-relational mapping )
- 자바의 객체와 데이터베이스를 자동으로 연결(매핑)하는 프로그래밍 기법
- 데이터베이스에 저장된 정보를 SQL를 사용하지 않고, 자바 언어로 접근하여 원하는 데이터 사용 가능
→ 객체와 데이터베이스를 연결해 자바 언어로만 데이터베이스를 다룰 수 있게 하는 도구
◉ ORM의 장점과 단점 ★★★
▪︎ ORM의 장점
① SQL을 직접 작성하지 않고 사용하는 언어로, 데이터베이스에 접근 가능
② 객체지향적으로 코드 작성 가능 → 비즈니스 로직에만 집중 가능
③ 데이터베이스 시스템이 추상화되어 있기 때문에 MySQL에서 PostgreSQL로 전환한다고 해도 추가로 드는 작업이 거의 없음
→ 데이터베이스 시스템에 대한 종속성이 줄어듦
④ 매핑하는 정보가 명확하기 때문에 ERD에 대한 의존도 낮출 수 있고, 유지보수할 때 유리함
▪︎ ORM의 단점
① 프로젝트의 복잡성이 커질수록 사용 난이도가 올라감
② 복잡하고 무거운 쿼리는 ORM으로 해결이 불가능한 경우가 있음
'백엔드 > Spring Boot' 카테고리의 다른 글
6. 블로그 기획하고 API 만들기 (1) - API와 REST API (0) | 2023.07.24 |
---|---|
5. 데이터베이스 조작이 편해지는 ORM (2) - JPA와 하이버네이트, 스프링 데이터와 스프링 데이터 JPA (0) | 2023.07.18 |
4. 스프링 부트 3와 테스트 (0) | 2023.07.14 |
3. 스프링 부트 3 구조 이해하기 (0) | 2023.07.12 |
2. 스프링 부트 시작하기 (2) - 스프링 부트 둘러보고 코드 이해하기 (0) | 2023.07.11 |