JPA

JPA란?

린예라 2024. 4. 3. 22:31

JPA(Java Persistence API)란?

Java에서 ORM(Object-Relational Mapping) 기술을 사용하기 위해 필요한 인터페이스들을 모아 놓은 것이다.

이 인터페이스들을 구현한 대표적인 오픈소스는 Hibernate가 있다.

 

결국 JPA는 ORM기술중에 하나이다. 그렇다면 ORM이란?

영어 뜻을 그대로 해석해 보면 객체관련 매핑이라고 볼 수 있다.

객체지향적 관점에서 DB의 테이블을 매핑(연결)하여 데이터를 관리하는 것이다.

 

우리는 ORM중에서도 JPA에 관해 알아 보고 있으니 자바 코드를 예시로 다음 그림을 참고해보자.

다음은 고양이라는 객체가 JPA를 통하여 DB에 저장되고 조회하는 과정이다.

위의 과정에서 SQL문이 아닌 자바의 Method를 통해 DB 조작이 가능하다.

 

결국 우리가 개발하는 환경과 DB사이에 JPA라는 인터페이스를 하나 더 두는 것이라고 볼 수 있다. 이에 따른 장단점은?

 

인터페이스를 사용하는 이유는 더 쉽고 편리하게 사용하기 위해서다.

장점

1.SQL문이 아닌 자바 Method를 통하여  DB를 조작하여 보다 직관적이고 가독성이 좋아진다.

 

2.직관적이고 가독성이 좋다는 것은 곧 코드의 유지보수성이 올라간다는 뜻이다.

 

3.객체 지향적인 개발을 하는데에 보다 더 편리하게 DB를 사용 할 수 있다.(자바 스프링이라거나 스프링부트라거나.....)

 

4.잘 설계된 JPA는 반복되는 CRUD작업을 자동화 할 수 있다.

 

 

원래 그냥 사용하던건데 그 사이에 무언가가(JPA) 하나 더 들어가니 복잡해지고 무거워지겟지?

단점

1.직접 SQL을 사용하는 것보다 느릴 수 있고, 복잡해지며 새로운 문제가 생길 수 있음(N+1문제 라던가)

 

2.매핑설계가 잘못되었을 때 성능저하가 생길 수 있고, 다수의 테이블 join시에 신경쓸게 많아진다.

 

3.즉 초기 설계나 설정에 많은 시간과 노력이 들게 되고 이에 따른 추가 학습이 필요하다.

 

 

하지만 JPA는 성능적인 단점을 극복하기 위해 캐싱등의 고급 기능을 제공하고 있다.

또한 위의 단점들을 보면, JPA를 잘 공부하고 필요한 시간과 노력을 잘들여서 처음에 잘 만들어두면 단점들을 대부분 보완 가능하다는 것을 알 수 있다. 

'JPA' 카테고리의 다른 글

양방향 연관관계 설정 mapped by  (1) 2024.11.15
JPA 영속성 컨텍스트  (0) 2024.04.04
N+1 문제  (0) 2024.04.02