[Spring] ORM과 JPA(Java Persistence API)

2025. 8. 11. 13:19·Spring

JPA(Java Persistence API) 

JPA는 자바 진영의 ORM 기술 표준, 인터페이스이다. 

JPA는 아래 그림처럼 애플리케이션과 JDBC 사이에서 동작한다. 

JPA

 

JPA 저장/JPA 조회

 

JPA는 객체와 관계형 데이터베이스의 패러다임 불일치를 해결한다. 

여기서 패러다임 불일치란, 객체지향과 관계형 데이터베이스의 세계가 서로 생각하는 방식이 달라서 생기는 문제들을 의미한다. 

1. 상속 문제 

2. 연관관계 문제 

3. 데이터 타입 문제 

4. 동일성 문제 

가 패러다임 불일치의 예시가 될 수 있다. 


ORM(Oriented-Relational Mapping) 

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

ORM 프레임워크를 사용하면 객체를 데이터베이스에 저장할 때 INSERT SQL을 직접 작성하는 것이 아니라 객체를 마치 자바 컬렉션에 저장하듯이 ORM 프레임워크에 저장하면 된다. 그러면 ORM 프레임워크가 적절한 INSERT SQL을 생성해서 데이터베이스에 객체를 저장해준다. 

 

단점이라고 하면 복잡한 SQL 튜닝은 어렵다. 또한 N+1 문제 같은 성능 이슈가 생길 수 있다. 


Hibernate(하이버네이브) 

JPA의 구현체로 JPA를 실제로 동작하도록 구현한 라이브러리이다. 

 

'Spring' 카테고리의 다른 글

[Spring] AOP(Aspect Oriented Programming)  (0) 2025.08.11
[Spring] 영속성 컨텍스트(Persistence Context)  (3) 2025.08.11
[Spring] IoC(Inversion of Control)와 DI(Dependency Injection)  (2) 2025.08.08
[Spring] 레이어드 아키텍처(Layered Architecture)와 Spring MVC  (0) 2025.08.05
[Spring] DispatcherServlet과 스프링부트 동작 구조  (3) 2025.07.26
'Spring' 카테고리의 다른 글
  • [Spring] AOP(Aspect Oriented Programming)
  • [Spring] 영속성 컨텍스트(Persistence Context)
  • [Spring] IoC(Inversion of Control)와 DI(Dependency Injection)
  • [Spring] 레이어드 아키텍처(Layered Architecture)와 Spring MVC
erika0915
erika0915
백엔드 개발자가 되고 싶어요 .
  • erika0915
    erikoding
    erika0915
  • 전체
    오늘
    어제
    • 분류 전체보기 (78)
      • 프로젝트 (13)
        • 끼니콩 (3)
        • 덕메랑 (3)
        • handDoc (7)
        • Haeil (0)
      • Java (9)
        • 클린코더스 (0)
      • Spring (30)
      • Redis (3)
      • CS (7)
        • 운영체제 (3)
        • 컴퓨터구조 (0)
        • 네트워크 (4)
      • DevOps (2)
      • 코딩테스트 (0)
      • Tech (14)
        • TDD (1)
        • 정리 (5)
        • 우테코 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    네트워크
    자바
    스프링
    github
    TDD
    MongoDB
    git
    지라
    깃
    몽고디비
    깃허브
    Network
    파인튜닝
    코드레빗
    Spring
    레디스
    CoolSMS
    promtail
    운영체제
    coderabbit
    AI
    도커
    java
    STT
    OS
    redis
    springboot
    docker
    스프링부트
    jira
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
erika0915
[Spring] ORM과 JPA(Java Persistence API)

티스토리툴바