자바 ORM 표준 JPA 프로그래밍 1장

01 JPA 소개

ORM(Object Relational Mapping)

객체와 관계형 데이터베이스를 매핑한다.

장점

  • 개발자 대신 SQL을 생성해 데이터베이스에 전달한다.
  • 다양한 패러다임의 불일치 문제들을 해결해준다.
    1. 상속
      • JPA를 사용해 A를 상속한 객체 B를 저장한다. 이때, JPA는 A와 B 두 테이블에 나누어 저장한다. 또한, 조회할 때는 JPA가 A와 B 두 테이블을 조인해서 필요한 데이터를 조회한다.
    2. 연관관계
      • 테이블은 외래키를 사용해 다른 테이블과 연관관계를 가지고 조인을 사용해 연관된 테이블을 조회한다.
      • 객체는 참조를 사용해 다른 객체와 연관관계를 가지고 참조에 접근해서 연관된 객체를 조회한다. 단, 참조가 있는 방향으로만 조회할 수 있다.
    3. 객체 그래프 탐색
      • SQL을 직접 다루면 처음 실행하는 SQL에 따라 객체 그래프를 어디까지 탐색할 수 있는지 정해진다.
      • JPA는 연관된 객체를 즉시 함께 조회할지 또는 실제 사용되는 시점에 지연해서 조회할지 설정으로 정의할 수 있다.
    4. 비교
      • 데이터베이스의 같은 로우를 조회할 때마다 같은 인스턴스를 반환하도록 구현하는 것은 쉽지 않다.
      • JPA는 같은 트랜잭션일 때 같은 객체가 조회되는 것을 보장한다. = 동일성 비교(== 비교, 객체 인스턴스의 주소 값을 비교) 성공

:bulb: 개발자가 데이터 중심인 관계형 데이터베이스를 사용해도 객체지향 애플리케이션 개발에 집중할 수 있다.

JPA(Java Persistence API)

자바 진영의 ORM 기술 표준 명세(인터페이스 모음)

사용해야하는 이유

  • 생산성
    • SQL 작성 및 JDBC API를 사용하는 코드를 개발자가 직접 작성하지 않아도 된다. = 반복적인 작업을 줄일 수 있다.
  • 유지보수
    • 필드를 추가하거나 삭제해도 수정해야 할 코드가 줄어든다.
    • 객체지향 언어가 가진 장점들을 활용해서 유연하고 유지보수하기 좋은 도메인 모델을 편리하게 설계할 수 있다.
  • 패러다임의 불일치 해결
  • 성능
    • 애플리케이션과 데이터베이스 사이에서 다양한 성능 최적화 기회를 제공한다.
  • 데이터 접근 추상화와 벤더 독립성
    • 애플리케이션과 데이터베이스 사이에 추상화된 데이터 접근 계층을 제공해 애플리케이션이 특정 데이터베이스 기술에 종속되지 않도록 한다.
  • 표준
    • 자바 진영의 ORM 기술 표준으로, 다른 구현 기술로 손쉽게 변경할 수 있다.

Tags:

Categories:

Updated: