Backend/Spring Boot

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

lim.dev 2023. 4. 4. 20:46

1장에서는 객체지향적인 설계와 관계형 데이터베이스를 매핑하는 ORM(Object-Relational Mapping)의 등장 배경과 이점, 그리고 JPA(Java Persistence API)를 알 수 있었습니다.


  1. 객체지향적인 설계와 관계형 데이터베이스의 불일치 문제
    • 객체지향적인 설계와 관계형 데이터베이스 간의 불일치 문제
      • 등록, 수정, 삭제,  조회용 SQL을 반복해서 작성
      • 객체지향의 장점을 포기하고 객체를 단순히 테이블에 맞추어 데이터 전달 역할만 하도록 함
    • ORM 기술의 등장 배경
      • 객체 모델링을 적용하였으나 세밀화 될 수록 객체 저장 및 조회가 점점 어려워 짐 
      • 관계형 데이터베이스와 객체 간의 차이를 메우기 위해 더 많은 SQL 작성 
      • 객체 모델이 점점 데이터 중심의 모델로 변해감
      • ORM: 객체와 관계형 데이터베이스 간의 차이를 중간에서 해결해주는 프레임워크
  2. ORM의 이점
    • 객체지향 프로그래밍의 이점을 그대로 유지할 수 있다
      • 객체 모델링과 관계형 데이터베이스 사이의 차이도 해결해줌
    • 생산성을 높일 수 있다
      • 반복적인 CRUD SQL을 알아서 처리해줌
      • 조회된 결과를 객체로 매핑하는 작업을 대부분 자동으로 처리해줌
      • 데이터 저장 계층의 작업량이 1/3으로 줄음
  3. JPA란?
    • JPA는 자바 ORM 기술에 대한 API 표준 명세
      • 자바에서 ORM을 구현하기 위한 표준 기술
      • 즉, 인터페이스를 모아둔 것
    • ORM 기술을 사용하기 위한 다양한 프레임워크 중 하나
    • 성능에 대한 걱정
      • JPA가 제공하는 네이티브 SQL 기능을 사용해서 직접 SQL을 작성
      • 데이터베이스 쿼리 힌트로 사용
  4. JPA의 장점과 특징
    • SQL을 직접 작성하지 않고 객체를 다루듯이 직관적인 방법으로 데이터를 다룰 수 있다
      • 생산성 향상 -> 데이터베이스 설계 중심의 패러다임을 객체 설계 중심으로 역전
    • DBMS 종류에 따라 SQL 쿼리문이 달라지지 않아도 동일한 결과를 얻을 수 있다
      • 유지보수, 유연 -> 개발자가 작성해야 했던 SQL과 JDBC API 코드를 JPA가 대신 처리해줌
    • 객체지향적인 설계와 데이터베이스 스키마 간의 불일치(패러다임 불일치)를 해결할 수 있다
    • 다양한 성능 최적화 기회 제공
    • 데이터 접근 추상화와 벤더 독립성


 

참고

  • 동일성 비교: == 비교, 객체 인스턴스의 주소 값을 비교함
  • 동등성 비교: equals() 메소드를 사용하여 객체 내부 값을 비교

JPA의 비교

  • 같은 트랜잭션일 때 같은 객체가 조회되는 것을 보장한다.
String memberId = "100";
Member member1 = jpa.find(Member.class, MemberId);
Member member2 = jpa.find(Member.class, MemberId);

member1 == member2; // 같다