본문 바로가기

DataBase/ORM

JPA 그리고 ORM 이란?

 그동안 개발을 하면서 MyBatis를 주로 사용해왔다. 그러던 중

JPA란 무시무시한 놈과 마주하게 되었다.


JPA란? 

Java Persitence API(자바영속성API)로 자바의 ORM 표준기술이다. 기본적으로 Application과 JDBC사이에서 동작한다. 그렇다면 ORM은 무엇일까?


ORM

Object-Relational Mapping이란 이름 그대로 객체와 관계형 DB를 매핑해주는 것이다. ORM은 객체와 테이블을 매핑하기 때문에 SQL쿼리를 직접 날리는 것이 아니라 마치 자바에서 라이브러리 사용하듯이 사용하면 된다. 

orm은 다음 과 같은 일을 해준다.

- Entity 분석

- 쿼리 생성

- JDBC API 사용

- Result Set 매핑

- 패러다임 불일치 해결


JPA를 사용해야하는 이유

1. 생산성 - 이것은 두말 할 필요 없을 것이다. JPA를 해본 사람이라면 직접 쿼리를 짜지 않아도 된다는 것을 알것이다.

2. 유지보수 - 이것 또한 위와 비슷하다. 직접 쿼리를 짜서 넣다보면 하나의 칼럼이 바뀌었을때 일일이 쿼리를 수정한 경험이 있을 것이다. 하지만 JPA는 Entity등록을 하면 저절로 해주기 때문에 간편하다. 유지보수를 해야할 코드가 줄어든다. 또한 DB의 도메인을 모델로 사용하여 모델을 알아보기 쉽다. 

3. 패러다임 불일치 해결 - 자주나오는 문제다 앞으로 나의 숙제라고 할 수 있다. JPA는 상속, 연관 관계, 객체 탐색 과 같은 패러다임 불일치 문제를 해결해준다. JPA가 어떻게 이렇게 해줄 수 있는지 계속 알아나가야 하겠다.

4. 성능 - JPA는 다양한 성능 최적화 기회를 제공한다. 예를 들어 똑같이 SELECT 하는 쿼리를 두번 보내어도 한번만 DB에 전달 하고 두번째는 첫번째에 SELECT한 객체를 재사용 한다.