JPA는 자바 진영의 ORM 기술 표준이다.
과거 자바 진영은 EJB라는 기술을 만들었으며 그 안에는 엔티티 빈이라는 ORM기술이 포함되어 있었다. 하지만 사용하기에 너무나 복잡하고 기술의 성숙도가 떨어지고 자바 J2EE 애플리케이션 서버에서만 동작했다.
이러한 단점을 전부 극복한 하이버네이트라는 오픈 소스 ORM프레임워크의 등장으로 많은 개발자가 하이버네이트를 사용하기 시작했고 결국 EJB 3.0에서 하이버네이트를 기반으로 새로운 자바 ORM 표준이 등장했는데 이것이 바로 JPA다.
그렇다면 ORM이란 무엇일까?
ORM은 Object Relational Mapping 으로 말 그대로 객체와 관계형 데이터베이스를 매핑하는 기술이다.
JPA는 다음 사진과 같이 애플리케이션과 데이터베이스 사이에서 동작한다.
JPA는 인터페이스입니다.
즉 JPA를 사용하기위해서는 구현체가 필요한데 대표적으로 많이 사용되는 것이 하이버네이트 프레임 워크 입니다.
하이버네이트는 어느정도 신뢰성이 존재하며 다양한 기업에서 사용하고 있습니다.
JPA를 사용하면 기존의 방식과 어떠한 점이 다를까?
1. 자바 컬렉션에 객체를 저장하듯이 JPA에게 저장할 객체를 전달하면 지루하고 반복적인 JDBC API작성 코드를 삭제할 수 있다. JPA가 대신 처리해주기 때문이다.
2. SQL에 의존적인 개발 즉 SqlMapper를 사용하는 경우 Entity에 필드를 하나 추가했다면 수정해야 할 코드가 하나 둘이 아니다. SQL 결과를 매핑하기 위해 JDBC API코드를 전부 변경해야 한다. 반면 JPA를 사용한다면 그럴 일이 없다.
3. 자바는 객체지향 언어이고 관계형 데이터베이스는 데이터를 중심으로 구조화되어있다. 이러한 차이를 JPA가 메워 객체지향 언어가 가진 장점을 활용해 도메인 모델을 편리하게 설계할 수 있다.
- 이 둘의 차이점을 나열해보자
1) 객체는 상속이라는 기능이 있다. 다만 테이블은 상속이 존재하지 않는다.
부모의 PK를 자식 테이블에서 PK, FK설정으로 상속과 유사한 형태로 테이블 설계가 가능하다.
2) 객체는 다른 객체를 참조하여 연관된 객체에 접근할 수 있지만 테이블은 외래 키를 사용해 다른 테이블에 접근한다.
3) 데이터 베이스는 기본키 값을 가지고 각 로우를 구분하는 반면 객체는 동일성 , 동등성 비교를 가지고 비교한다.
4. JPA는 애플리케이션과 데이터베이스 사이에서 동작하기 때문에 최적화 관점에서 시도할 수 있는 것이 많다.
5. 관계형 데이터베이스는 벤더마다 사용법이 다른 경우가 많은데 JPA를 사용함으로써 관계형 데이터베이스 변경에 큰 영향을 받지 않는다.
이러한 장점을 가지고 있지만 학습하기에는 선행조건이 많다.
객체와 테이블을 매핑하기 위해선 객체지향과 데이터베이스 양쪽 모두 이해를 하고 사용해야 한다.
객체지향과 관계형 데이터베이스를 어떻게 매핑하는지 학습한 후 JPA의 핵심 개념을 공부해야 합니다.
'데이터 접근 기술 > JPA' 카테고리의 다른 글
[JPA] JPQL 소개 (0) | 2021.01.30 |
---|---|
[JPA] 즉시 로딩과 지연 로딩 (0) | 2021.01.28 |
[JPA] 상속 관계 매핑 (0) | 2021.01.27 |
Entity 매핑 (0) | 2020.09.03 |
JPA 영속성 (0) | 2020.09.02 |
댓글