코딩하는 둥둥

[ Springboot ] JPA개념잡기 : 영속성 컨텍스트란 무엇인가요? 본문

Backend/스프링부트 개념정리(이론)

[ Springboot ] JPA개념잡기 : 영속성 컨텍스트란 무엇인가요?

둥둥 2022. 2. 14. 21:05
728x90
JPA란?

4. JPA는 영속성 컨텍스트를 가지고 있다.

※ 영속성 : 어떤 데이터를 영구적으로 저장하게 해주는 것

→ Java에서는 DB에 저장함 ( MySql )

 

※ Context 컨텍스트 : 대상에 대한 모든 정보를 가지고 있는것

→ 모든 컨텍스트를 알고있다 = 모든 것을 알고 있다. 

 

=.> 영속성 컨텍스트 = 자바가 데이터베이스에 데이터를 저장해야하는 모든것들을 알고있는것

- 자바에서 데이터를 select하고자 할때 영속성 컨텍스트에 해당 데이터가 없을 경우 DB에서 해당 데이터를 가져온다.

- 자바에서 데이터를 변경했을때 영속성 컨텍스트의 데이터도 해당 값으로 변경된다.

이때 DB에 커밋을 할 경우 insert가 아닌 update가 발생된다.

 

=> java는 항상 영속성 컨텍스트를 통해 데이터베이스에 데이터를 저장하고, 데이터베이스의 데이터도 영속성 컨텍스트를 통해서 데이터가 자바쪽으로 전단된다.

=> 영속성 컨텍스트에서 일어나는 모든일은 자동으로 실행된다★★

 

5. JPA는 DB와 OOP의 불일치성을 해결하기 위한 방법론을 제공한다.(DB는 객체저장 불가능)

데이터베이스에서는 ojbect의 저장이 불가능

따라서 데이터베이스 테이블에 맞춘 클래스를 생성해야하고 이 경우 FK로 받아온 다른 테이블의 값을 연결시켜주기 위해 select하거나 join해야 했음

 

but, 자바에서는 기본자료형이 아닌 object를 저장할수 있기때문에 OOP(객체지향)을 이용해 object를 저장

 

JPA는 자바와 DB의 이러한 불일치성(DB는 object 저장불가 / java는 가능)을 해결하기위해 ORM을 이용

→ ORM을 이용해 모델을 만들때 java가 주도권을 쥐고있는 모델을 만들수 있다.

이렇게 들어간 데이터를 insert/update할때 JPA가 자동으로 매핑해서 데이터를 넣어준다.

 

6. JPA는 OOP의 관점에서 모델링을 할 수 있게 해준다.(상속, 콤포지션, 연관관계)

 

7. 방언 처리가 용이하여 Migration하기 좋음. 유지보수에도 좋음.

 

8. JPA는 쉽지만 어렵다.

728x90