자바 객체와 관계형 데이터베이스 사이의 매핑을 자동으로 수행하여,
SQL 문을 직접 작성할 필요 없이 객체를 통해 데이터를 저장하고 조회할 수 있도록 해 주는
Java EE(Enterprise Edition)에서 정의된 표준 ORM 기술
Entity: 데이터베이스 테이블과 매핑되는 자바 클래스.
EntityManager: 데이터베이스 연산(저장, 조회, 수정, 삭제) 담당 인터페이스.
Persistence Context: 엔티티 객체 관리 환경, 영속성 컨텍스트라고도 불린다.
JPQL: SQL과 유사한 문법을 가진 객체 중심 쿼리 언어.
데이터베이스 테이블과 매핑되는 객체 생성.
EntityManager가 객체 영속성 컨텍스트에 저장.
변경된 객체를 트랜잭션을 통해 데이터베이스에 반영.
기존 SQL이 아닌 객체 중심의 JPQL을 사용하여 데이터를 조회.
생산성 향상 : SQL 문을 직접 작성할 필요가 없어 개발 시간 단축.
객체 지향적 데이터 접근 : 객체를 통해 데이터베이스를 조작하여 높은 가독성.
트랜잭션 관리 : 자동으로 트랜잭션을 관리하여 데이터 일관성을 유지.
DB 독립성 보장 : 다양한 데이터베이스에서 동일한 코드로 동작 가능.
높은 러닝 커브: 초기에 설정 및 학습 필요.
성능 문제: 대량의 데이터 처리에서의 N+1 같은 성능 저하 이슈 발생 가능성.
자동 쿼리 생성의 한계: 복잡한 쿼리의 Native SQL 필요 가능성.
JPA는 객체 중심으로 데이터베이스를 조작할 수 있는 강력한 ORM 기술이다.
하지만 설정 및 학습 비용이 있으며, 올바른 매핑과 성능 최적화 기법을 적용하지 않으면
오히려 성능이 저하될 수도 있다.
따라서, 프로젝트의 규모 및 요구사항을 고려하여 활용하는 것이 중요하다.