개발공부/Spring

스프링부트 개념정리 2(JPA, ORM, 영속성 컨텍스트)

코푸딩 2022. 11. 24. 17:30
728x90

JPA(java persistence(영속성) api)

java데이터를 영구히 기록*하기 위해 필요한 API(interface**)

 

*영구히 기록: DB에 저장하는 것을 의미

**interface: 강제성 있는 규약(규칙)

 

JPA의 기능과 관련된 개념들

1. ORM(object relational mapping)

java와 DB는 데이터 타입이 달라 서로 통신할 때 상대방의 형식에 맞게 데이터를 모델링해야한다

이때 JPA를 통해 java 데이터 형식을 DB 데이터 형식으로(또는 반대로) 변환하는 기법을 ORM이라고 한다

 

2. CRUD(create, read, update, delete)

java와 DB간 통신에 발생하는 읽고 쓰고 바꾸고 지우는 행위들을 통칭

JPA는 단순하고 반복적인 CRUD행위를 간략하게 해준다

 

3. 영속성 컨텍스트

 JPA에 관한 모든 정보을 담고 있다

  * 컨텍스트란?: 어떤 것에 관련된 정보

java에서 DB로 데이터 통신시 직접 통신하지 않고 영속성 컨텍스트를 경유해 통신

그래서 영속성 컨텍스트는 java와 DB 사이 통신한 모든 정보를 가지고 있다

 

JAVA에서 DB에 데이터를 저장할 때

  • JAVA (데이터 전송) → 영속성컨텍스트(데이터 저장)
  • 영속성 컨텍스트(java에서 보낸 데이터와 DB의 데이터를 비교)
  • 영속성 컨텍스트(데이터 저장 또는 갱신) → DB

JAVA와 DB의 통신 사이에 있는 영속성 컨텍스트

4. DB와 OOP의 데이터 형식 불일치 문제 해결

OOP는 객체 지향 프로그래밍이므로 변수에 객체를 참조할 수 있으나 DB는 각 속성에 객체를 넣을 수 없다

그래서 java에서 객체에 해당하는 데이터를 DB에 요청할 때 JPA가 객체에 맞는 데이터를 DB에서 찾아 넣어줌으로 DB에서 지원하지 않는 객체 형식의 데이터를 java에서 사용할 수 있다

java에서 DB에 데이터를 입력, 수정할 때도 동일하게 JPA가 작동한다

728x90