프로그래밍/JPA

[ JPA ] JPA란?

후르트링 2022. 3. 27. 16:55
728x90

JPA

  • Java 진영에서 ORM(Object-Relational Mapping) 기술 표준으로 사용하는 인터페이스 모음
  • 자바 어플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스
  • 인터페이스 이기 때문에 Hibernate, OpenJPA 등이 JPA를 구현합니다

 

 

ORM(Object Relational Mapping)

  • 객체와 관계형 데이터베이스를 매핑하는 기술
  • 개발자 대신 SQL문을 작성해주기 때문에 개발자는 단순한 SQL문 작성보다 비즈니스 로직 구성하는데 집중할 수 있어 생산성이 높아집니다.
  • Java의 대표적인 ORM은 JPA가 있으며 다른 언어, 프레임워크에도 ORM이 존재합니다(Python -django)

 

JPA 사용 이유

자바를 통한 데이터 접근 방식에는 JDBC API, MyBatis 등이 있습니다.

이런 방식은 다음과 같은 여러가지 문제가 발생하였습니다.

  • 등록, 수정, 삭제, 조회(CRUD)의 SQL 반복
    • 객체에 있는 멤버변수가 추가 혹은 삭제 될때마다 SQL문을 수정해야합니다
    • 쿼리 사용시 선언문 혹은 연결 등의 부가적인 코드가 생기므로, 코드의 가독성이 떨어집니다.
  • 객체와 관계형 데이터베이스의 차이
    • 객체를 단순히 데이터 전달 목적으로 사용할 뿐, 객체 지향적이지 못함 ( 페러다임 불일치 )
    • SQL 중심적인 개발

이러한 문제들을 해결하기 위해 JPA가 등장하였습니다.

 

 

JPA 장점

  • 생산성
    • JPA를 자바 컬렉션에 객체를 저장하듯 JPA에게 저장할 객체를 전달.
    • SQL을 작성하고 JDBC API 사용하는 지루하고 반복적인 일을 JPA가 대신 처리해준다.
    • CREATE TABLE같은 DDL문 자동 생성
    • 데이터베이스 설계 중심의 패러다임을 객체 설계 중심으로 역전
  • 유지보수의 간편함
  • 패러다임 불일치 해결
    • 상속, 연관관계, 객체 그래프 탐색, 비교하기 같은 패러다임 불일치 해결

'프로그래밍 > JPA' 카테고리의 다른 글

[ JPA ] 다양한 연관 관계 매핑  (0) 2022.04.14
[ JPA ] 연관관계 매핑 기초  (0) 2022.04.13
[ JPA ] 영속성 컨텍스트란?  (0) 2022.03.28