JPA와 영속성

froajnzd·2024년 7월 29일
0

java

목록 보기
10/11
post-thumbnail

JPA는 Java Persistence API의 준말이다.
ORM(Object Relational Mapping=객체 관계 매핑 기술)의 표준으로, 인터페이스(API!)를 모아둔 패키지이다.

데이터를 애플리케이션이 실행될 때 계속 유지하도록 도와준다.

JPA는 API(인터페이스)이므로 구현체가 필요하다.
이를 구현한 것에는 대표적으로 Hibernate, EclipseLink, DataNucleus가 있다.

Spring이 JPA를 정말 잘 사용하고 있는 예인데,
Java의 JPA를 Spring이 더 잘 사용할 수 있도록 도와주는 Plugin이 Spring Data JPA이다.

우리는 이런 식으로 Spring에서 JPA를 사용하고 있다고 생각하면 된다!

일단 JPA에 대해서 알아보자.

JPA는 SQL과 JAVA의 패러다임 불일치를 해결해준다.
객체지향적으로 프로그래밍하는 Java와 관계형 데이터베이스인 SQL 사이의 간극을 중간에서 해결해주는 역할을 한다.
객체지향 JAVA 애플리케이션을 개발자 대신 SQL문으로 치환해준다.

다음으로 JPA가 어떻게 동작하는지 알아보자

  1. 대표적인 구성요소는 다음과 같다.
    • Java 애플리케이션, 그와 연결할 DB
    • 그 둘을 연결해주는 ORM
    • Java 애플리케이션 안의 EntityContext
    • EntityContext 안에서 동작하는 EntityManager
    • Java 애플리케이션 안에서 살아있는 객체
  1. 객체는 persist라는 메서드로 EntityManager에게 말한다.

  1. 객체는 EntityContext에서 EntityManager에 의해 관리된다.
    => 객체는 애플리케이션이 꺼져도 DB에서 살아있을 수 있다!!

  1. 그럼 같은 room 객체가 여러개 생성될 때는 Manager는 어떻게 관리할까?

  1. 우리는 POST 요청을 할 때, room 데이터에서 id를 주지 않았다..!
    id를 다르게 설정해서 각각의 객체를 관리해야하는데,,, 그럼 Manager가 임의로 만들까? 아니다!
    => DB에 저장하면, auto_increment 규칙에 따라 데이터의 id가 생성되므로 해당 작업을 먼저 한다.

  1. 그러면 db id에 맞춰 Java안의 객체에게도 id를 부여하여 이 객체들을 관리한다

profile
Hi I'm 열쯔엉

0개의 댓글