본 내용은 유튜브 나무소리님의 강의 내용을 정리한 내용입니다.
1-2강 객체의 세상과 테이블의 세상
자원(resource) 접근 레이어
- 비즈니스 컴포넌트는 비즈니스 로직 레이어(Service)에, 자원 접근 모듈은 자원 접근 레이어(Repository)에 놓여 있습니다.
- 어떤 객체의 정보(예, Customer)가 자원 접근 레이어를 통해서 저장될 때는 하나의 인터페이스를 타고 들어 갑니다.
- 하지만, 실제로 그데이터가 저장되는 경로는 자원 접근 레이어에서 어떤 모듈을 처리하는가에 따라 다릅니다.
객체지향 모델과 관계형 모델
- 객체지향 애플리케이션과 관계형 데이터베이스는 서로의 목표가 다릅니다.
- 이를 패러다임이 일치하지 않는다고 표현하며 이는 개발과정에서 많은 비용을 발생하게 합니다.
- 영속적으로 데이터를 저장하기 위해 객체와 테이블을 서로 맞추는 과정이 필요합니다.
객체지향 모델 | 관계형 모델 |
객체, 클래스 | 테이블, 로우 |
속성(attribute, property) | 컬럼 |
identity | Primary Key |
RelationShip / 다른 엔티티 참조 | Foreign Key |
상속 / 다형성 | 없음 |
메소드 | SQL, 로직, SP, 트리거 |
코드의 이식성 | 벤더 종속적임 |
SQL Mapping과 OR Mapping
- 자바 애플리케이션에서 관계형 데이터베이스의 사용을 돕는 프레임워크를 Persistence Framework라 합니다.
- Persistence Framework는 로직에서 DB연결 설정을 분리하여, 개발자가 비즈니스 로직에 집중할 수 있도록 도와줍니다.
- Persistence Framework는 SQL Mapping과 OR Mapping으로 구분합니다.
- SQL Mapping은 자바 코드와 SQL을 분리하며 개발자가 작성한 SQL의 수행 결과를 객체로 매핑합니다. (예, MyBatis)
- OR Mapping은 객체와 관계형 데이터베이스 사이에서 매핑을 담당하며 SQL을 생성하여 패러다임의 불일치를 해결합니다. (예, JPA)