백엔드/Spring Boot

5. 데이터베이스 조작이 편해지는 ORM (1) - 데이터베이스, ORM

두개의 문 2023. 7. 17. 21:30

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으로 해결이 불가능한 경우가 있음