JPA란?

MINJU·2022년 4월 16일
0

스프링

목록 보기
15/15

JPA는 Java Persistence API입니다. 자바 진영에서 ORM(Object Relational Mapping) 기술 표준으로 사용되는 인터페이스의 모음입니다. 그 말은 실제적으로 구현된 것이 아니라 구현된 클래스와 '매핑'을 해주기 위해 사용되는 프레임워크입니다. JPA를 구현한 대표적인 오픈 소스로는 Hibernate라고 합니다.

ORM이란

애플리케이션 Class와 RDB(Relation DataBase)의 테이블을 연결한다는 뜻으로, 기술적으로는 어플리케이션의 객체를 RDB 테이블에 자동으로 영속화해주는 것으로 보면 됩니다.
간단하게 말하자면 객체는 객체대로 설계하고, 관계형 DB는 관계형 DB대로 설계한 뒤, ORM 프레임웤그가 중간에서 매핑해주는 것입니다.

( 장점 )

  • SQL 문이 아닌 Method를 통해 DB를 조작할 수 있어서 개발자는 객체 모델을 이용하여 비즈니스 로직을 구성하는데만 집중할 수 있습니다.
  • Query와 같이 필요한 선언문, 할당 등의 부수적인 코드가 줄어들어 각종 객체에 대한 코드를 별도로 작성하여 코드의 가독성을 높일 수 있습니다.
  • 객체 지향적인 코드 작성이 가능합니다.
  • 매핑하는 정보가 class로 명시되어 있기 때문에 ERD를 보는 의존도를 낮출 수 있습니다.

( 단점 )

  • 복잡하고 무거운 쿼리는 속도를 위해 별도의 튜닝이 필요하므로.. 결국 SQL문을 사용하게 됩니다.

JPA

: 현재 JAVA 진영에서의 ORM 기술 표준으로서 인터페이스의 모음입니다. 실제로 동작하는 것은 아닙니다. JPA 인터페이스를 구현한 대표적인 오픈소스가 Hibernate입니다. 참조2

JPA는 반복적인 CRUD SQL을 처리해줍니다. JPA는 매핑된 관계를 이용해서 SQL을 생성하고 또 실행하고, 직접 SQL을 작성할 수 있는 네이티브 SQL 기능도 제공해줍니다.

JPA의 동작 과정

: JPA는 java 애플리케이션과 JDBC 사이에서 동작합니다.
: 사용자가 JPA를 쓰면, JPA 내부에서 JDBC API를 사용해서 SQL을 호출하여 DB와 통신하는 것입니다. (사용자는 직접 JDBC API를 사용하지 않습니다.)
: MemberDAO에서 객체를 저장하고 싶을 때, 사용자가 JPA에 Member객체를 넘기면 JPA는 Member 엔티티를 분석하고 + INSERT SQL을 생성한 후 + JDBC API를 사용하여 SQL을 DB에 날립니다.

JPA를 왜 사용해야하니

  1. SQL 중심 -> 객체 중심 개발
    : SQL 중심개발이 된다면 코드가 무한 반복될 가능성이 높아집니다. 하나하나 수정해야하므로 실수 발생 확률이 높으며 데이터를 잘 정규화해서 보관하려는 RDB와 속성과 메서드로 잘 캡슐화해서 사용하려는 객체와의 패러다임 불일치 이슈도 존재합니다.
  2. 생산성
    : 간단한 CRUD가 가능해집니다.
  3. 유지 보수
    : 수정 발생시 필드만 추가하면 됩니다. 모든 SQL을 수정하는 것은 JPA가 처리해줍니다.
    4.Object와 RDB 간의 패러다임 불일치 해결
    ..

참조1
참조2

0개의 댓글