기존의 방법들은 객체지향적 모델링에 맞지 않고 SQL(데이터) 중심의 코드를 구현하게 함
객체와 관계형 데이터베이스 간의 차이를 중간에서 해결해주는 ORM(Object Relation Mapping) 프레임워크가 존재, JPA는 ORM의 자바 표준
기존의 반복되는 CRUD SQL과 객체지향 데이터 모델링과 관계형 데이터베이스 간 차이점을 해결
상속과 연관 관계
상속
객체 관계에서는 단순히 컬렉션을 사용하여 상속 관계에 대한 객체를 사용 가능
DB모델링에서는 객체를 분해, 각 SQL을 생성하여 만들어야 함
연관
객체는 각 객체에 대한 참조를 유지, 참조를 통해 연관 객체를 사용
DB 모델링에서는 테이블 외래 키를 사용, Join을 통해 연관 테이블을 조회
이 두 가지의 접근 방법은 너무너무너무 간격이 커서 객체지향 모델링보다는 DB 모델링에 프로그램이 종속되게 만들었음.
연관 관계 상 문제점
객체의 경우 참조에 대한 접근 즉 a -> b는 가능하지만 b -> a는 불가능 함
하지만 DB 모델링의 경우 외래키만 존재한다면 양 테이블 접근 가능
객체지향 모델링 상 문제점
객체지향 모델링은 참조를 통해 접근, DB는 테이블 외래키를 통해 접근
객체는 참조가 필요하지만 테이블은 참조가 필요없고 외래키만 필요하니 개발자가 중간에 변환을 해야 한다.
객체 그래프 탐색
비교
DB의 경우 row(행)으로 데이터를 구분하는데, 이 데이터들은 서로 동일하지 않다.
같은 row를 조회 하더라도 == 연산자를 통해 비교시 객체 관점에서는 서로 다른 인스턴스가 된다.