JPA의 정의
- JPA(Java Persistence API)는 자바 진영의 ORM 기술 표준이다.
- 자바 어플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스이다.
- ORM이기 때문에 자바 클래스와 DB 테이블을 매핑한다.
ORM이란
Object Reloational Mapping, 객체-관계 매핑이다.
- 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑해주는 것을 말한다.
- Persistant API라고도 할 수 있다.
JPA의 특징
- JPA는 특정 기능을 하는 라이브러리가 아니고, 그저 인터페이스일 뿐이다.
- Hibernate는 JPA라는 명세의 구현체이고, JPA를 직접 구현한 라이브러리 이다. JPA와 Hibernate는 마치 자바의 interface와 해당 interface를 구현한 class와 같은 관계이다.
- String Data JPA는 JPA를 쓰기 편하게 만들어 놓은 모듈이다. 이 모듈 덕분에 EntityManagerw를 직접 다루지 않고도 Repository를 사용해서 DB에 접근할 수 있다. Repository의 기본 구현체인 SimpleJpaRepository 코드를 보면 내부적으로 EntityManager를 사용하고 있는 것을 알 수 있다.
JPA의 장,단점
장점
- SQL문이 아닌 메서드를 통해 DB 조작이 가능하기 때문에, 개발자는 객체를 사용해 비즈니스 로직을 구성하는데만 집중이 가능해진다.
- 쿼리와 같이 필요한 선어문, 할등등의 부수적인 코드가 줄어들어 각종 객체에 대한 코드를 별도로 작성하여 코드의 가독성을 높일 수 있다.
- 객체적인 코드 작성이 가능해진다.
- 유지보수 및 리팩토링에 유리하다.
단점
- 프로젝트의 규모가 크고 복잡하여 설계가 잘못된 경우에는 속도 저하 및 일관성을 무너뜨리는 문제점이 발생할 수 있다.
- 복잡하고 무거운 쿼리문은 속도를 위해 별도의 튜닝이 필요하기 때문에 결국 SQL 문을 쓰는게 나은 상황이 발생할 수도 있다.
- 러닝 커브가 높다.
참고링크
'Spring > JPA' 카테고리의 다른 글
JPA Repository 메서드 (0) | 2022.07.29 |
---|---|
좋은 Entity 설계하는 방법들 (0) | 2022.07.25 |