GiYeong

JPA 본문

CS/JPA

JPA

gy2710 2022. 7. 19. 15:38

JPA(Java Persistence API)

현재 자바 진영의 ORM 기술 표준으로, 인터페이스의 모음이다.

 

JPA의 동작 과정

JPA는 어플리케이션과 JDBC 가이에서 동작한다.

개발자가 JPA를 사용하면, JPA 내부에서 JDBC API를 사용하여 SQL을 호출하고, DB와 통신한다.

즉, 개발자가 직접 JDBC API를 사용하지 않는다.

 

저장 과정

MemberDAO에서 객체를 저장하고 싶은 경우

1. JPA에 Member 객체를 넘긴다.

2. JPA에서 Member 엔티티를 분석한다.

3. JPA에서 SQL을 생성한다.

4. JPA에서 JDBC API를 사용해서 SQL을 DB에 날린다.

 

조회 과정

Member 객체를 조회하고 싶은 경우

1. JPA에 member의 pk 값을 넘신다.

2. JPA에서 엔티티의 매핑 정보를 바탕으로 적절한 SELECT SQL을 생성한다.

3. JPA에서 JDBC API를 사용해서 SQL을 DB에 날린다.

4. JPA가 DB로부터 결과를 받아온다.

5. JPA가 결과(ResultSet)를 객체에 모두 매핑한다.

-> 쿼리를 JPA가 만들기 떄문에 객체와 관계형 데이터베이스 간의 패러다임 불일치를 해결할 수 있다.

 

 JPA의 장점

1. 생산성

  • JDBC API를 사용했을 때 발생되는 반복적인 작업을 JPA가 대신 처리해준다.
  • CREATE TABLE과 같은 DDL문을 자동으로 생성해준다.
  • 데이터베이스 설계 중심의 패러다임을 객체 설계 중심으로 바꿔준다.
  • 간단한 CRUD

2. 유지보수

  • 개발자가 작성해야하는 SQL과 JDBC API 코드를 JPA가 대신 처리해줌으로서 유지보수해야하는 코드가 줄어든다.

3. 성능

  • 다양한 성능 최적화 기회를 제공한다.
  • 어플리케이션과 데이터베이스 사이에 존재함으로서 여러 최적화를 시도할 수 있다.

4. 데이터 접근 추상화와 벤더 독립성

  • 데이터베이스 기술에 종속되지 않도록 해준다.
  • 데이터베이스를 변경하면 JPA에 다른 데이터베이스를 사용한다고 알려주면 된다.

'CS > JPA' 카테고리의 다른 글

N + 1 문제  (0) 2022.08.31
JPA 영속성 컨텍스트  (0) 2022.08.31
ORM  (0) 2022.07.19
Comments