JPA (Java Persistence API)
자바 진영의 ORM 기술 표준이다
현재 JPA 2.1을 구현한 ORM 프레임워크로 Hibernate, EclipseLind, DataNucleus 등이 있고 Hibernate가 가장 대중적이다.
그렇다면 ORM은 뭘까?
ORM (Object-Relational Mapping)
이름 그대로 객체와 관계형 데이터베이스를 매핑하는 기술
JPA, ORM 모두 객체 모델과 관계형 데이터베이스 모델의 패러다임 불일치 문제를 해결해주기 위해 생겨났다.
JPA의 장점
생산성
데이터베이스에서 저장할 때는 객체를 넘겨주고
데이터베이스에서 조회할 때 기본키만 입력하여 객체를 가져오는 등 지루하고 반복적인 일을 JPA가 대신 처리해준다.
jpa.persiste(member); // 저장
Member memeber = jpa.find(memberId); //조회
유지보수
기존 SQL에 의존적인 개발에서 데이터베이스를 변경하면 많은 코드를 수정해야 했지만 이런 과정을 JPA가 대신 처리.
JPA가 패러다임의 불일치를 해결해주기 때문에 객체지향 언어으 특징을 더욱 활용하여 유연하고 유지보수하기 좋은 도메인 모델을 편리하게 설계 가능
패러다임의 불일치 해결
객체 모델과 관계형 모델의 패러다임을 해결
성능
애플리케이션과 데이터벵스 사이에서 다양한 성능 최적화 기회를 제공. 영속성 컨텍스트, SQL 힌트 등등을 활용
데이터 접근 추상화와 벤더 독립성
각 데이터베이스마다 같은 기능이라도 사용법이 다른 경우가 많다. 따라서 데이터베이스를 변경하려면 각 데이터베이스의 사용법을 배워야하고 기존 코드들을 많이 수정해야 했다. JPA를 사용하면 어떤 DB를 사용할 것인지 알려주기만 하면 된다.
JPQL
SQL을 추상화하여 엔티티 객체를 대상으로 쿼리
따라서 특정 데이터베이스 SQL에 의존하지 않는다
한 마디로 객체지향 SQL
JPQL은 데이터베이스 테이블을 전혀 알지 못한다
JPQL vs SQL
JPQL은 엔티티 객체를 대상으로 쿼리
반면이 SQL은 데이터베이스 테이블을 대상으로 쿼리
'Study > JPA' 카테고리의 다른 글
[JPA] 프록시와 연관관계 (0) | 2023.09.08 |
---|---|
[객체지향쿼리] JPQL, Criteria, 네이티브 SQL, QueryDSL, JDBC Connection (0) | 2023.08.29 |
[JPA] 상속 관계 매핑과 @MappedSuperClass (0) | 2023.08.26 |
[JPA] 다대다 매핑 (0) | 2023.08.26 |
[JPA] 연관 관계의 주인과 양방향 연관 관계의 주의점 (0) | 2023.08.26 |