본문 바로가기
이론/JPA

[JPA] JPA를 사용해야 하는 이유

by 6161990 2021. 9. 26.

JPA는 대안이다. 아주 훌륭한.

어떤 기술로부터 , 왜, 어떻게 JPA가 탄생하고 쓰이게 되었을까 에 대해 포스팅해본다.

 

01. SQL 중심적인 개발의 문제점

  • 무한 반복, 지루한 코드 CRUD .. INSERT INTO , UPDATE , INSERT , DELETE

    ✋ 객체에 필드를 하나추가한다면? 모든 쿼리문에 필드를 추가해야한다. 

 

  • Member 객체를 조회할 때 속해져있는 Team 도 같이 조회해야할까?

 

 

02. 패러다임의 불일치 

📍 객체 vs 관계형 데이터 베이스의 차이

 

1. 상속 

  • 관계형 DB에는 상속 개념이 존재하지 않는다.
  • data를 저장하려면 객체를 분해하여 해당 테이블에 맞는 data를 각각 INSERT , INSERT , UPDATE ... 해주어야한다.
  • 따라서 DB에 저장할 객체에는 상속 관계를 쓰지 않는다.

 

2. 연관관계

  • 객체는 참조를 사용한다. member.getTeam()
  • 테이블은 외래 키를 사용한다. JOIN ON M.TEAM_ID = T.TEAM_ID

객체와 테이블의 차이

 

상속과 연관관계 외에도 데이터 타입, 데이터 식별 방법 등등 을 생각하면,
객체와 관계형 데이터 베이스의 간극 은 너무나 광활하다.

 

✋ 여기서 잠시, 자바 컬렉션의 저장과 조회를 생각하면 이는 너무나 간단하다. 

그렇다면, 객체를 자바 컬렉션에 저장하듯이 DB에 저장할 수는 없을까?

 

 


 

JPA | Java Persistence API : 자바 진영의 ORM 기술 표준

📍 ORM ?

  • Object-relational mapping : 객체 관계 매핑
  • 객체는 객체대로 설계
  • 관계형 데이터 베이스는 관계형 데이터 베이스대로 설계
  • ORM 프레임워크가 중간에서 매핑
  • 대중적인 언어에는 대부분 ORM 기술이 존재

 

📍 JPA는 애플리케이션과 JDBC 사이에서 동작

 

  • JPA 동작 - 저장

 

 

  • JPA 동작 - 조회

 

 

📍 JPA를 왜 사용해야 하는가? 

  • SQL 중심적인 개발에서 객체 중심으로 개발
  • 생산성 : 저장˙조회˙수정˙삭제가 용이
  • 유지보수 : JPA 엔티티클래스에서 필드만 추가하면 SQL (쿼리)는 JPA가 처리한다.
  • 패러다임의 불일치 해결 : 상속, 연관관계, 객체 그래프 탐색, 비교 전부 JPA가 내.외부적으로 해결한다. 
  • 성능 : 1차 캐시와 동일성 보장, 트랜잭션을 지원하는 쓰기 지원 , 지연로딩
  • 데이터 접근 추상화와 벤더 독립성
  • 표준

'이론 > JPA' 카테고리의 다른 글

[JPA] Proxy 프록시  (0) 2021.09.18