Java Persistence API

JPA 탄생 배경

KakaoTalk_20220926_110912752.jpg

보통 개발 과정 중에 데이터를 DB에 저장하는 과정은 VO에서 DAO의 SQL 쿼리를 이용해 DB에 저장하거나 수정한다.만약 요구사항 변경이 이루어진다면, 쿼리는 다시 수정되어야 하며,빈번하게 이루어진다. 이러한 과정은 개발을 지루하게 만든다.

SQL 사용시 쿼리 개발이 지루해 지는 이유

아래 코드에서 Member에 또 다른 정보를 추가 한다면 어떻게 될까?이 Member 객체와 관련된 수많은 다른 쿼리를 수정해야 한다.

결국 개발자는 CRUD를 하려고 너무 많은 SQL과 JDBC API를 반복적으로 작성해야 하는 문제가 생긴다.

SQL에 의존적인 개발을 피하기 어렵다.

public class Member {
  private String memberId;
  private String name;
  
  ...
}

INSERT INTO MEMBER(MEMBER_ID, NAME) VALUES ...
SELECT MEMBER_ID, NAME FROM MEMBER M
UPDATE MEMBER SET ...

그렇다면,관계형 데이터 베이스에서 이러한 SQL에 의존하지 않고, 기본 비지니스 로직의 설계에 초점을 맞추어 개발을 할 수 는 없을까 ?

만약 개발자가 SQL 쿼리를 입력하지 않고 , 회원 정보와 같은 정보를 직접 객체에 저장할 수 있다면 얼마나 편할까 ? List 처럼 말이다.

   list.add(member);

하지만, 안타깝게도,데이터 베이스는 객체 구조와는 다른 데이터 중심의 구조를 가지므로 객체를 데이터베이스에 직접 저장하거나 조회할 수 없다.

SQL 중심에서 객체 중심으로

번거로운 SQL 작업을 비지니스 로직에 초점을 맞춘다는 것은 결국 객체의 데이터를 바로 관계형 DB에 입력할 수 있어야 한다.