영속성
어플리케이션의 상태와 상관 없도록 물리적인 저장소(DBMS)에 데이터를 저장하는 행위를 영속화라고 한다.
보편적으로 적용되는 RDBMS에 데이터를 저장하기위해서는 SQL 을 이용해 데이터를 저장한다.
JDBC
자바에서 영속화를 하기위해서는 JDBC 인터페이스를 활용한다.
JDBC인터페이스는 자바 어플리케이션과 데이터베이스의 소통을 위한 기능들을 정의한다.
각 데이터베이스(Oracle, H2, MySQL 등)는 JDBC 인터페이스를 구현하는 클래스들을 제공하며 이를 드라이버라고 한다.
쉽게 각 제조사 마다 각각의 JDBC Driver를 가지고 있으며 이는 JDBC 인터페이스를 기준을 삼고 있다. 그렇기 때문에 데이터베이스를 변경할때는 JDBC Driver만 변경해주면 된다.
순수 JDBC기반의 데이터관리는 비용과 시간이 많이 발생하게된다.
자원(resource) 접근 레이어
비즈니스 컴포넌트는 비즈니스 로직 레이어에, 자원 접근 모듀은 자원 접근 레이어에 놓여 있다.
어떤 객체의 정보가 자원 접근 레이어를 통해서 저장될 때는 하나의 인터페이스를 타고 들어가게된다.
객체와 테이블 (Object & Table)
객체지향 모델 | 관계형 모델 |
---|---|
객체, 클래스 | 테이블, 로우 |
속성(attribute, porperty) | 컬럼 |
Identity | PK |
RelationShip / 다른 엔티티 참조 | FK |
상속 / 다형성 | 없음 |
메서드 | SQL 로직, SP, 트리거 |
코드의 이식성 | 벤더 종속적임 |
위 표를 보면 객체 중심의 객체지향 어플리케이션과 테이블 중심의 데이터베이스는 서로의 목표가 다르다. 이는 패러다임이 일치하지 않는다고 표현하며 이를 맞추는 과정이 필요하다.
이 과정에서 사용되는 프레임워크를 Persistence Framework라고 하며 그 종류는 SQL Mapping, OR Mapping으로 구분한다.
SQL Mapping | OR Mapping |
---|---|
자바 코드와 SQL을 분리하여 개발자가 작성한 SQL의 수행 결과를 객체로 매핑 | 객체와 관계형 데이터베이스 사이에서 매핑을 담당하며 SQL을 생성하여 패러다임 불일치를 해결 |
SQL 매핑은 개발자가 직접 SQL을 작성하지만 ORM 방식은 어노테이션(annotation)을 활용하기 때문에 SQL 작성이 필요없다.