OneK-2
article thumbnail
Published 2024. 7. 29. 09:15
JPA Spring

JPA의 등장배경

자바와 DB의 관점 차이

번호 이름 가격
1 돈까스 10,000원
2 김밥 4,000원
3 치킨마요 8,500원
번호 주문날짜 주문자 음식번호
101 12/15 kim 1
102 12/16 lee 3
103 12/25 kim 2

위 테이블에 대한 설계를 해보자.

DB JAVA
Integer 번호
Date 주문날짜
Varchar 주문자
integer 음식번호
Integer 번호
Date 주문날짜
String 주문자
Food 음식

 

자바는 계층 관계, DB는 동등 관계의 관점이다.

자바는 참조를 통해 연관관계를 맺고, 연관관계를 맺은 객체의 정보를 조회하기 위해 참조한 객체에 접근한다.

DB는 연관된 테이블과 FK를 통해 연관관계를 맺고, 해당 테이블의 정보 조회는 FK와 조인을 통해 조회한다.

자바는 객체 지향 언어로 서비스 로직에서 다루는 데이터가 객체의 형태를 하고 있다.

위의 테이블에 맞춘 객체 모델처럼 외래 키까지 관계형 데이터베이스 방식에 맞추면 객체지향의 특징을 잃게 될 것이다.

이와 같이, 데이터를 바라보는 관점 차이를 자바와 DB의 패러다임 차이라고 한다.

 

이러한 패러다임 차이를 해결해주는 기술이 ORM(Object Relataion Mapping)이다.

ORM은 객체와 관계형 데이터베이스 간의 데이터를 매핑해주는 기술인데,

JPA가 자바 진영의 표준 ORM 프레임이다.

그래서 JPA?

JPA Java Persistence API의 약자로, 자바에서 객체를 데이터베이스에 저장하고 관리하기 위한 API를 제공한다.

주의할점이 있는데 JPA != Spring Data JPA이다.

JPA는 자바에서 제공하고, JPA를 편하게 쓰기 위해 감싸 놓은것이 Spring Data JPA다.

 

DB API들의 구현체 내 주요 객체

  • JDBC
    • 구현체: Hikari (패키지)
    • 주요 객체: DataSource
  • JPA
    • 구현체: hibernate (패키지)
    • 주요 객체: EntityManager
  • Spring Data JPA (추후에 추가)
    • 구현체
    • 주요 객체

JPA가 어떻게 영속화를 해줄까?

  • 자바 객체 ⇒
  • Entity : 영속화 되고 싶은/된 객체
    • @Entity 어노테이션을 클래스 위에 달아두면, EntityContext (영속화가 될/된 객체 공간)에 들어가고 싶어~
  • EntityManager
    • persist() : EntityContext에 Entity를 모아둠 + 테이블에 저장
    • EntityContext에 있는 것만 관리가 가능하다.
  • ORM

EntityContext가 다 똑같이 생긴 객체를 식별해주기 위해 id를 사용한다.

'Spring' 카테고리의 다른 글

M : N 관계 그냥 쓰면 안되나?  (0) 2024.07.23
왜 DTO를 사용하는가?  (1) 2024.07.22
Gradle Dependecies  (0) 2024.07.19
스프링 빈과 주요 어노테이션  (0) 2024.07.17
Web서버 vs WAS  (1) 2024.07.16
profile

OneK-2

@인문학여행

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그