[JPA] 패러다임 불일치
패러다임 불일치
밀도(Granularity) 문제
객체 | 릴레이션 |
---|---|
다양한 크기의 객체를 만들기 있음. 커스텀한 타입 만들기 쉬움. |
테이블 기본 데이터 타입(UDT는 비추) |
서브타입(Subtype) 문제
객체 | 릴레이션 |
---|---|
상속 주고 만들기 쉬움 다형성 |
테이블 상속이라는 게 없음 상속 기능을 구현했다 하더라도 표준 기술이 아님 다형적인 관계를 표현할 방법이 없음 |
식별성(Identity) 문제
객체 | 릴레이션 |
---|---|
레퍼런스 동일성(==) 인스턴스 동일성(equals() 메소드) |
주키 (primary key) |
관계(Association) 문제
객체 | 릴레이션 |
---|---|
객체 레퍼런스로 관계 표현 근본적으로 ‘방향’이 존재 다대다 관계를 가질 수 있음 |
외래키(foreign key)로 관계 표현 ‘방향’이라는 의미가 없음. 그냥 Join으로 아무거나 묶을 수 있음. 태생적으로 다대다 관계를 못만들고, 조인 테이블 또는 링크 테이블을 사용, 두개의 1대다 관계로 풀어야 함 |
데이터 네비게이션(Navigation) 문제
객체 | 릴레이션 |
---|---|
레퍼런스를 이용해서 다른 객체로 이동 가능 콜렉션을 순회할 수도 있음 |
하지만 그런 방식은 릴레이션에서 데이터를 조회하는 데 있어서 매우 비효율적이다. 데이터베이스에 요청을 적게 할수록 성능이 좋다. 따라서 Join을 쓴다. 그렇다고 lazy loading을 하자니 (n+1) 문제 |