다양한 데이터베이스가 있지만 아직까지 데이터베이스의 세계는 관계형 데이터베이스가 대세이다.
객체지향을 원하지만 관계형 데이터베이스 때문에 중복되는 무수한 SQL을 작성하는 코드가 발생하게 된다. 즉, SQL 의존적인 개발을 피하기 어렵다.
필드와 메서드를 묶어 캡슐화하는 객체와 데이터를 잘 정규화해서 보관하는 것을 목표로 하는 데이터베이스는 패러다임이 일치하지 않았다.
A.b
를 통해서 객체간 자유롭게 이동하며 탐색하는 것객체 그래프 탐색을 진행하기 전 SQL을 확인하여 어느 부분까지 불러왔는지 확인을 우선적으로 해야 한다.
DAO를 통해 동일한 데이터를 조회해도 객체는 다르다.
Member m1 = dao.getMember(1);
Member m2 = dao.getMember(1);
m1 != m2
객체 답게 모델링을 할 수록 SQL 매핑 작업만 늘어나므로 이러한 문제를 해결할 수 있는 JPA를 사용하게 되었다.