영속성의 이해
- 영속성: 영원히 계속되는 성질이나 능력. 프로그램이 종료되어도 데이터가 보존됨을 의미
- 영속화: 물리적인 저장공간에 데이터를 저장하는 행위
- Client로 부터 어떤 요청이 들어오면 Dispatcher Servlet이 해당 Controller에게 전달하고 Controller는 또 해당 Service에게 전달한다. Service는 storage에 저장된 데이터를 기반으로 응답을 최종적으로 클라이언트에게 전달하는데, 여기서 Storage를 DB를 사용하여 데이터를 영속적으로 관리하게 된다.
- 객체지향 애플리케이션에서는 객체를 특정 저장소에 저장하는 행위를 영속화라고 한다.
Java Application과 DB가 소통하는 방법
- DB에 데이터를 저장하기 위해서는 SQL문을 이용하여 데이터를 CRUD 한다
- java application과 DB를 연결할 방법이 필요하다. 자바에서는 JDBC(Java DataBase Connectivity)라는 API를 인터페이스로 가지고 있다. JDBC를 통해 DBMS와 데이터를 주고 받음. 가장 기초적인 단계
- JDBC는 자바와 데이터베이스를 연결하기 위한 기능을 정의하는 interface들의 집합
- java application과 DBMS 사이에 연결해주는 역할인 JDBC가 없다면, DBMS를 변경할 때마다 코드를 수정해야 할 것이다.
- JDBC interface를 기준으로 DB와 연동하는 코드를 구현한다. 각 DBMS들은 실제 JDBC interface의 구현체인 JDBC Driver를 제공한다.
- DB를 변경할 때, JDBC Driver만 교체하는 방식으로 쉽게 DBMS를 변경할 수 있다.
- 간편하게 DBMS와 연결할 수 있도록 방법을 제공하는 framework들이 있다. 하나는 OR mapping, 하나는 SQL mapping 방식이다. ORM == JPA, SQLM == Mybatis
요약
java application <-> JDBC <-> Driver <-> DBMS
자바 애플리케이션과 DB가 소통하기 위해 JDBC와 JDBC Driver가 필요하다.
이를 편리하게 도와주는 프레임워크들이 있는데, 방식에 따라 OR Mapping, SQL Mapping이라고 한다. 대표적으로 각각 JPA와 MyBatis가 있다.