
: 데이터베이스를 관리하기 위한 SW.
DB는 많은 사람들이 공유할 수 있어야 하기 때문에 동시 접근이 가능해야 한다.
또한 많은 요구사항이 있는데 이 요구사항을 만족하면서도 효율적으로 DB를 운영.
: 관리 특징에 따라 객체-관계형, 도큐먼트형, 비관계형으로 분류한다.
관계형 DBMS(= relational DBMS): RDBMS라고도 부른다. 테이블 형태로 이루어진 데이터 저장소이다.
ex) H2, MySQL
H2: 자바로 작성되어 있는 RDBMS이자 스프링 부트가 지원하는 인메모리 관계형 데이터베이스.
( 데이터를 다른 공간에 따로 보관하는 것이 아니라, 애플리케이션 자체 내부에 데이터를 저장한다.
-> 애플리케이션을 다시 실행하면 데이터는 초기화된다. )ID | email | age ---------------------- 1 | a@test.com | 10 ---------------------- 2 | b@test.com | 20
도큐먼트형 DBMS : JSON과 유사한 형식의 문서를 저장, 사용할 수 있는 NoSQL데이터베이스 유형.
AWS 공식문서 : 도큐먼트 데이터베이스란?
ORM의 장점과 단점
- 장점:
- SQL을 직접 작성 X, 사용하는 언어로 DB 접근 가능.
- 객체지향적으로 코드 작성 ㅇ -> 비즈니스 로직에만 집중 가능.
- DB 시스템이 추상화되어 있기 때문에, DBMS를 전환(MySQL -> PostgreSQL)해도 추가적으로 드는 작업이 거의 없다. (데이터베이스 시스템에 대한 종속성이 줄어든다.)
- 단점:
- 프로젝트 복잡성이 커질수록 사용 난이도가 올라간다.
- 복잡하고 무거운 쿼리는 ORM으로 해결 불가능한 경우가 생긴다.

ex) 스프링부트가 엔티티 매니저를 사용하는 예시
@PersistenceContext
EntityManager em;
스프링부트는 기본적으로 빈을 하나만 생성하여 공유하므로 동시성 문제가 생길 수 있다.
따라서, 실제로는 엔티티 매니저가 아닌, 실제 엔티티 매니저와 연결하는 프록시(가짜) 엔티티 매니저를 사용한다. 필요할때에만 데이터베이스 트랜잭션과 관련된 실제 엔티티 매니저를 호출한다.
해당 글은 다음 도서의 내용을 정리하고 참고한 글임을 밝힙니다.
신선영, ⌜스프링 부트 3 벡엔드 개발자 되기 - 자바 편⌟, 골든래빗(주), 2023, 384쪽