JPA란?
- 자바 진영의 ORM(Object Relational Mapping) 기술 표준으로 ORM 기술을 사용하기 위한 표준 인터페이스의 모음
- ORM은 자바 객체와 DB테이블을 매핑하고 자바 객체간의 관계를 토대로 SQL을 생성 및 실행 할 수 있으며 대중적인 언어에는 대부분 ORM 기술이 존재
- JPA를 활용하기 위해서는 Hibernate를 사용함
JPA의 특징
- 영속성 컨텍스트가 엔티티를 생명주기를 통해 관리한다.
- native SQL을 통해 직접 SQL을 해당 DB에 맞게 작성할 수도 있다.
- DBMS별로 dialect를 제공
- DBMS별로 문법과 함수가 다른 경우가 있는데 이러한 SQL표준을 지키지 않은 특정 기능을 방언(dialect) 라고 한다.
<aside>
💡 영속성 컨텍스트란?
엔티티를 영구 저장하는 환경이라는 뜻
애플리케이션과 데이터베이스 사이에서 객체를 보관하는 가상의 데이터베이스 같은 역할을 한다. 엔티티 매니저를 통해 엔티티를 저장하거나 조회하면 엔티티 매니저는 영속성 컨텍스트에 엔티티를 보관하고 관리함
</aside>
JPA의 장점과 단점
[ 장점 ]
- 객체지향과 관계지향이라는 서로다른 패러다임 불일치를 해소해 주며 SQL 중심이 아닌 객체지향 패러다임 중심의 개발이 가능
- 개발자가 직접 SQL을 따로 작성하지 않아도 SQL문을 작성해 주므로 생산성이 향상
- SQL을 수정할 필요가 없으므로 설정 및 필드 변경 시 SQL이 자동 수정되어 유지보수가 향상
- DB의 종류에 따라 SQL문에 있어 다소 차이가 있지만 JPA는 개발자 대신 이를 판단하고 해당 DB에 맞는 SQL을 작성해 준다.
- 캐시를 활용한 성능 최적화로 인해 트랜잭션을 처리하는 시간이 굉장히 많이 단축된다.