HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
📝
남득윤 학습 저장소
/
자바 ORM 표준 JPA 프로그래밍 - 기본편
자바 ORM 표준 JPA 프로그래밍 - 기본편
/
1️⃣
1. JPA 소개
1️⃣

1. JPA 소개

 

애플리케이션

  • 객체 지향 언어 - [Java, Scalar, ...]
 

데이터베이스

  • 관계형 DB - [Oracle, MySQL, ...]
 
DB는 SQL만 알아들을 수 있다.
→ 애플리케이션이 SQL로 떡칠이된다.

CRUD 지옥 - 단순 반복

  • JdbcTemplate
  • 쿼리 매퍼 - Mybatis 등이 도와 준다고 하더라도 결국 쿼리를 짜야됨
 

패러다임의 불일치

Object 🆚 Relation
객체지향의 특성 - 추상화, 캡슐화, 상속, 다형성을 RDB는 지원하지 않는다.
 

상속

notion image
→

Album을 하나 저장하자

query를 쪼개야 됨 ㅜ.ㅜ
 

Album을 하나 조회하자

join해서 필드를 다 채워넣어야됨 ㅜ.ㅜ
 

컬렉션이면?

list.add(album), list.get(albumId) 완전 쉽다!

연관관계

  • 객체는 참조 - 단방향
  • 테이블은 FK - 양방향
 
객체를 테이블 처럼 모델링
→
class Member { Long id; Long teamId; String username; } class Team{ Long id; String teamName; }
Member 저장
⇒ 참 쉽다!
이게 객체지향?

이거지
class Member { Long id; Team team; String username; } class Team{ Long id; String teamName; }
조회가 너무 빡새네..
 

객체 그래프 탐색

notion image
 
탐색범위가 SQL에 따라 정적으로 결정된다.

비교하기
notion image
컬렉션이라면?
당연히 같다

객체지향이랑 RDB를 함께 쓰려니까 너무 힘들어...
→ JPA - ORM
 

ORM
  • Object-relational mapping(객체 관계 매핑)
  • 객체는 객체대로 설계
  • 관계형 데이터베이스는 관계형 데이터베이스대로 설계
  • ORM 프레임워크가 중간에서 매핑
 

JPA는 애플리케이션과 JDBC사이에서 동작
notion image
JPA
  • 엔티티를 분석해 SQL을 만들어줌
  • JDBC API사용
  • 영속성 컨텍스트를 통해 패러다임 불일치 해결