1. JPA란?
JPA는 자바에서의 ORM 기술 표준으로, 애플리케이션과 JDBC 사이에서 동작한다.
일단 먼저 JPA에 대해 알아가기 전에, ORM이란 무엇인가??
2. ORM(Object-Relational Mapping)
-> 객체와 관계형 데이터베이스를 매핑한다는 것이다.
-> 예를 들면, ORM 프레임워크를 사용했을 때 데이터베이스에 객체를 저장하려면, INSERT SQL문을 직접 작성하는 것이 아니라 자바 컬렉션에 저장하듯 ORM 프레임워크에 저장하면 된다.
-> 그러면 ORM 프레임워크에서 적절한 INSERT SQL을 생성해 데이터베이스에 객체를 저장한다.
3. JPA
과거 자바 빈즈라는 기술 표준 안에 엔티티 빈이라는 ORM 기술이 포함되어 있었다. 하지만 너무 복잡하고 자바 엔터프라이즈 애플리케이션 서버에서만 동작했기 때문에 하이버네이트라는 ORM 프레임워크가 등장하게 되었다.
EJB 3.0에서 이 하이버네이트를 기반으로 새로운 자바 ORM 기술 표준이 만들어졌고, 이것이 바로 JPA라고 한다.
이게 무슨말이냐면, JPA는 자바 ORM 기술에 대한 API 표준 명세로 인터페이스를 모아둔 것이다. 즉, JPA를 사용하려면 JPA를 구현한 ORM 프레임워크를 선택해야 하고, 이 중 하이버네이트가 가장 대중적이다.
3-1. 왜 JPA?
1) 생산성
-> INSERT SQL을 작성하고 JDBC API를 사용하는 일을 단순히 JPA에게 저장할 객체를 전달하기만 하면 된다. (반복적인 일의 단순화)
-> CREATE TABLE 같은 DDL 문을 자동으로 생성해주는 기능도 있다.
-> 이러한 기능들을 통해 데이터베이스 설계 중심의 패러다임을 객체 설계 중심으로 역전시킬 수 있다.
2) 유지보수
-> SQL에 의존적인 개발에 경우, 엔티티를 변경해야 할 때도, 관련된 SQL문, JDBC API 코드를 모두 변경해줘야 함.
-> JPA는 이런 과정 자체를 JPA가 처리해주기 때문에 유지 보수에 있어서 이점이 있다.
3) 성능
-> 애플리케이션과 데이터베이스 사이에 다양한 성능 최적화 기회를 제공한다.
-> 뒤에 정리할 것이긴 하지만, 캐시 기능을 통해 기존 조회한 객체에 대해서는 SQL문을 사용하지 않는다.
4) 데이터 접근 추상화와 벤더 독립성
-> 관계형 데이터베이스는 같은 기능도 사용법이 다른 경우가 많다. 그렇기에 애플리케이션에서 처음 데이터베이스 기술을 선택하고 나서는 다른 데이터베이스로 변경이 어렵다.
-> JPA의 경우 애플리케이션과 데이터베이스 사이 추상화된 데이터 접근 계층을 제공해 애플리케이션이 특정 데이터베이스 기술에 종속되지 않도록 한다.
'Back-end > JPA' 카테고리의 다른 글
[JPA] 자바 ORM 표준 JPA 프로그래밍 (4) - 연관관계 매핑 기초 (0) | 2025.01.09 |
---|---|
[JPA] 자바 ORM 표준 JPA 프로그래밍 (3) - 엔티티 매핑 (2) | 2024.12.18 |
[JPA] 자바 ORM 표준 JPA 프로그래밍 (2) - 영속성 관리 (0) | 2024.12.17 |