- 배경
현 시대에 어떤 모델로 어떻게 데이터를 저장하고 관리할까?
지금까지 완료된 상당수의 프로젝트는 객체를 관계형 DB에 관리하는 형태이다.
이러한 형태는 SQL에 상당히 의존적이다. 개발자는 반복적인 코드를 작성해야 하며, 객체의 필드 추가 시 SQL도 추가적으로 수정해야 한다는 치명적인 단점이 존재한다.
만일, mybatis를 통해 특정 Object를 조회한다고 가정해보자.
먼저, 각각의 테이블에 따른 Join SQL을 작성해야 한다.
그 다음, Java단에서 각각의 객체를 생성해야 하며, 서로 매핑해주어야 한다.
아주 번거로운 작업이 계속될 수 밖에 없다.
근데 java 컬렉션에 저장하고 조회한다면?
List.add(car);
Car car = list.get(carId);
ElectricCar electricCar = List.get(carId);
이런식으로 간단하게 SQL 없이 객체로만 접근이 가능하다.
즉, 객체를 테이블에 맞추어 모델링이 가능하다.
결국 객체를 자바 컬렉션에 저장하듯이 DB에 저장할 수는 없을까?
이 needs를 해결해주는게 바로 JPA (Java Persistence API) 이다.
- JPA란?
JPA는 자바진영의 ORM 기술 표준이며,
여기서 ORM은 Object-relational mapping로써, 객체-관계 매핑의 의미이다.
즉, 객체는 객체대로 설계 - 관계형 데이터베이스는 관계형 데이터베이스대로 설계한 후, ORM 프레임워크가 중간에서 매핑해주는 개념이다.
JPA는 Java application과 JDBC 사이에서 동작한다.
이러한 JPA를 사용하면 얻을 수 있는 이점을 알아보자.
-
SQL중심 개발에서 객체 중심으로 개발
-
생산성 향상 - Java Collections 문법으로 CRUD 처리
-
유지보수의 효율성 증대 - 테이블 구조 변경시 객체 컬럼 수정을 통해 해결하면 SQL은 JPA가 처리
-
성능 향상 - 1차 캐시 이용
정도로 요약할 수 있다.
소스 작성을 통해 본격적으로 공부해보자.