WEEK 6-11: Spring JPA

ensalada.de.pollo·2025년 5월 18일

be

목록 보기
33/44

JPA

JPA(Java Persistence API)는 자바 객체와 관계형 데이터베이스 간의 패러다임 불일치 문제를 해결하기 위해 만들어진 Java ORM(Object-Relational Mapping) 기술 표준입니다.

인터페이스만 제공하며, 실제 구현체로는 Hibernate, EclipseLink, OpenJPA 등이 있습니다.

이를 사용하면 Java 객체를 DataBase 테이블에 매핑하고, 객체를 조작하는 것만으로 DB 작업이 가능해집니다.

동작 원리와 ORM

ORM은 Java 클래스와 DB 테이블을 자동으로 매핑하여 객체 지향적으로 데이터베이스를 다룰 수 있게 해주는 것을 의미합니다.

JPA는 개발자가 직접 SQL을 작성하지 않고, Java 객체의 CRUD 작업을 메서드 호출로 처리할 수 있게 해줍니다.

장점

  • 반복적인 SQL, JDBC 코드 작성 없이 객체 조작만으로 CRUD 작업이 가능해 생산성이 높아집니다.
  • 객체 필드가 변경되어도 SQL을 직접 수정할 필요 없이 JPA가 자동으로 처리하여 유지보수성이 높아집니다.
  • 상속, 연관관계, 객체 그래프 탐색 등 객체 지향의 패턴을 데이터베이스에 자연스럽게 적용하여 패러다임 불일치 문제를 해결합니다.
  • 1차 캐시, 쓰기 지연, 지연 로딩 및 즉시 로딩 등 성능 최적화 기능이 내장되어 있어 성능 측면에도 좋습니다.
  • 특정 DB에만 종속되지 않고, 설정만 바꾸면 다른 DB로 쉽게 전환이 가능해 데이터베이스 독립성이라는 특징도 가지고 있습니다.

주요 개념

  • Entity
    : 데이터베이스 테이블에 매핑되는 Java 클래스를 의미합니다.
  • Repository
    : 엔티티의 저장, 조회, 삭제 등 DB 작업을 담당하는 인터페이스입니다. Spring Data JPA 에서는 JpaRepository를 상속받아 사용합니다.
  • EntityManager
    : JPA의 핵심 객체로, 엔티티의 생명주기를 관리하고 쿼리를 실행하며 트랜잭션 처리를 담당합니다.
  • JPQL
    : 객체지향 쿼리 언어입니다. SQL과 유사하지만, 엔티티 객체를 대상으로 쿼리를 작성할 수 있습니다.

JPA와 Hibernate

JPA는 표준 명세이고, Hibernate는 그 구현체 중 하나입니다.
JPA를 사용하면 구현체를 갈아끼울 수 있어 벤더 종속성이 낮아집니다.

hibernate.dialect

Hibernate가 사용하는 데이터베이스 방언을 지정하는 설정입니다.

각 데이터 베이스는 SQL 표준을 지키지 않는 고유 기능이 존재해 Hibernate가 적합한 SQL을 생성하려면 dialect 지정이 필요합니다.

자료 및 코드 출처: 스파르타 코딩클럽

0개의 댓글