asd9211 / JPA-Study

JPA Study

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

JPA-Study

  • 배경

현 시대에 어떤 모델로 어떻게 데이터를 저장하고 관리할까?

지금까지 완료된 상당수의 프로젝트는 객체를 관계형 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를 사용하면 얻을 수 있는 이점을 알아보자.

  1. SQL중심 개발에서 객체 중심으로 개발

  2. 생산성 향상 - Java Collections 문법으로 CRUD 처리

  3. 유지보수의 효율성 증대 - 테이블 구조 변경시 객체 컬럼 수정을 통해 해결하면 SQL은 JPA가 처리

  4. 성능 향상 - 1차 캐시 이용

정도로 요약할 수 있다.

소스 작성을 통해 본격적으로 공부해보자.

About

JPA Study


Languages

Language:Java 100.0%