11.2 OR 맵핑 프레임워크
Java 애플리케이션 개발 시 Java 및 데이터소스와의 통합에 대해서 쉽게 생각할 수도 있다. 하지만 단순한 데이터소스의 읽기, 쓰기 문제에 머물지 않고 다음과 같은 매우 복잡한 것들이 얽혀 있다.
Java에서 객체는 직접호출하면 되지만, RDBMS는 주 키와 외부 키를 사용하여 테이블간 조인을 통해 호출한다. 최대한 재사용하기 위해서 Java의 객체는 캡슐화를 사용한다. 이것을 관계형 데이터베이스로 맵핑하면 불필요한 호출이 많이 발생한다.
객체 모델과 관계형 모델 간의 맵핑이 어려워진다. 객체-관계 임피던스 불일치(Object-Relational Impedance Mismatch)란 객체지향 애플리케이션에서 객체와 RDBMS에 있는 테이블을 결합하는 과정에서 성능이 떨어지는 현상을 통칭하는 말이다. 임피던스 불일치(Impedance Mismatch)는 원래 불충분한 전력 흐름을 나타내는 전기공학 용어로부터 유래된 단어이다.
개발자는 애플리케이션 설계 및 데이터베이스 무결성에 영향을 주지 않고 객체 지향 Java 애플리케이션을 관계형 및 비 관계형 데이터 소스와 쉽게 통합하는 제품이 필요하다.
JPA는이런 맵핑을 유연하게 처리하여 객체지향 기술과 관계형 데이터베이스를 쉽게 연결해 주기 때문에 개발자가 빠르게 맵핑을 구현할 수 있도록 한다.
객체지향 애플리케이션과 관계형 데이터를 연결하는 미들웨어를 사용하여 복잡한 객체의 저장을 단순화하고 있다. 또, 객체지향과 관계형 데이터 사이에 있는 애플리케이션 서버에 위치하기 때문에 가장 빈번하게 호출되는 데이터를 캐시에 저장해 애플리케이션 성능을 빠르게 할 수 있다.