Archive/예전 TIL

JPA란 무엇인가?

khu2172 2024. 10. 3. 00:49

JPA는 자바에서 사용하는 ORM 기술의 표준이며 인터페이스의 모음으로 이뤄져 있다. 다양한 구현체가 존재하지만 hibernate를 가장 대중적으로 사용한다.

 

ORM이란?

객체와 RDBMS의 데이터를 매핑 시켜주는 기술이다. 객체를 자동으로 관계형 데이터 베이스에 저장된 데이터와 파싱해주며 객체 지향적인 코드로 인해 더 직관적이고 비즈니스 로직에 더 집중할 수 있게 도와준다.

 

JPA 장점

- 개발자가 쿼리문을 작성하는 과정이 없어져 비즈니스 로직에 집중할 수 있게 해주고 관계형 데이터 베이스의 데이터를 가져와 객체로 파싱해주기 때문에 객체 중심의 개발이 가능해짐

- JPA가 데이터 베이스에 따라 알맞는 쿼리문을 작성해주기 때문에 특정 데이터 베이스에 종속되지 않아서 유지보수가 용이하다.

 

JPA 단점

- 복잡한 쿼리문이 아닌 메서드를 사용하기 때문에 복잡한 쿼리를 JPA만을 사용하여 해결하기에는 문제가 있으며, 이를 해결하기 위해 nativeQuery를 사용하게 되면 특정 데이터 베이스에 종속되지 않는다는 JPA의 장점이 사라지기 때문에 JPQL이라는 기술을 지원한다. JPQL은 테이블이 아닌 객체를 대상으로 검색하는 객체지향 쿼리이다. SQL을 추상화해서 특정 데이터 베이스에 종속되지 않는다.

- 잘못 사용하게 된다면 순환 참조나 N+1 문제를 발생 시키는 원인이 되기도 한다.