일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- CORS
- css
- activeIndex
- vscode
- error
- querySelector
- classlist
- watchOverflow
- index
- eslint prettier
- prettier
- jquery
- realIndex
- v-bind
- display
- swiperOption
- javascirpt
- slidePerView
- centerSlides
- slideChange
- JavaScript
- js
- slidePerGroup
- vue2
- 인덱스
- archiver
- Vue
- swiper
- eslint
- loop:true
- Today
- Total
코딩하는 둥둥
[ Springboot ] JPA개념잡기 : 영속성 컨텍스트란 무엇인가요? 본문
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는 쉽지만 어렵다.
'Backend > 스프링부트 개념정리(이론)' 카테고리의 다른 글
[ Springboot ] Springboot 동작원리 : HTTP가 무엇일까요? (0) | 2022.02.15 |
---|---|
[ Springboot ] JPA개념잡기 : OOP관점에서 모델링이란 무엇일까요? (0) | 2022.02.15 |
[ Springboot ] JPA개념잡기 : ORM이란 무엇인가요? (0) | 2022.02.11 |
[ Springboot ] JPA개념잡기 : JPA란 무엇인가요? (0) | 2022.02.10 |
[ Springboot ] Spring 개념잡기 : 메시지 컨버터가 무엇인가요? (0) | 2022.02.09 |