데이터베이스는 객체 구조와는 다른 데이터 중심의 구조를 가지므로 객체를 데이터베이스에 직접 저장하거나 조회할 수는 없다. 따라서 개발자가 객체지향 애플리케이션과 테이터베이스 중간에서 SQL과 JDBC API를 사용해서 변환 작업을 직접 해주어야한다.
A객체가 연관된 B객체를 사용할 수 있을지 없을지는 전적으로 사용하는 SQL에 달려 있다. 이런 방식의 큰 문제는 데이터 접근 계층을 사용해서 SQL을 숨겨도 어쩔 수 없이 DAO를 열어 어떤 SQL이 실행되는지 확인해야 한다. 이런 강한 의존 관계 때문에 조회나 필드를 추가할 때도 DAO의 CRUD 코드와 SQL의 대부분을 변경해야 한다.
개발자가 직접 SQL을 작성하는 것이 아니라 JPA가 제공하는 API를 사용하면 된다. JPA는 개발자 대신 SQL을 생성해서 DB에 전달한다.
JPA의 CRUD API
//저장jpa.persist(member);//조회String memberID = "helloID";Member member = jpa.find(Member.class, memberID);//수정(별도의 수정 메소드가 없음)Member member = jpa.find(Member.class, memberID);member.setName("이름변경");//연관된 객체 조회Member member = jpa.find(Member.class, memberID);Team team = member.getTeam();