Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- docker
- 배열최소값최대값
- 브로드캐스트
- 센토스
- 우분투
- 도커권한설정
- EC2
- filezilla
- 1946
- Decapsulation
- 리눅스환경
- 모래시계출력
- 디비버
- 백준1946
- 배열복사
- 리눅스계열
- 오름차순
- 다차원배열
- wan
- 네트워크모델
- 포트포워딩 안될때
- 백준
- ubuntu
- 객체배열
- 페이로드
- 배열빈도수
- dbeaver
- 포트포워딩
- 유니캐스트
- 도커
Archives
- Today
- Total
다잘하고싶어
더티체킹 Dirty Checking 본문
[Spring Data]
스프링을 사용하면 별도로 데이터베이스에 save 하는 과정이 이루어지지 않는다.
과정을 살펴보면 다음과 같다.
1. 트랜잭션 시작
2. 엔티티 조회
3. 엔티티 값 변경(데이터 변경)
4. 트랜잭션 커밋
즉, 데이터베이스에 update 쿼리와 관련된 코드가 없다는 것.
그러나 콘솔창을 확인해보면 자동으로 save 메서드로 변경사항을 저장하지 않아도 update 쿼리가 실행된 것을 확인할 수 있다.
이유는?
더티체킹 Dirty Checking
Dirty = 상태의 변화가 생긴 정도
Dirty Checking = 상태 변경 검사
JPA에서는 트랜잭션이 끝나는 시점에 변화가 있는 모든 엔티티 객체를 데이터베이스에 자동으로 반영한다.
즉, save 메서드를 사용하지 않아도 자동으로 update쿼리를 날려준다는 것.
이때, 상태 변경 검사의 대상은 영속성 컨텍스트가 관리하는 엔티티에만 적용된다.
(+ 값을 변경해도 데이터베이스에 반영되지 않도록 하기 위해서는 @Transactional(readOnly = true) 어노테이션 사용한다)
--> 여러 사용자가 동시에 데이터에 접근할 경우, 데이터 중복변경이나 오류를 방지하기 위해 사용하는 방식이라고 기억하는데,
이에 대한 추가적인 공부가 필요할 것 같다.
'이론학습 > SRPING' 카테고리의 다른 글
[Spring] 로그인구현6_서블릿HTTP 세션, 스프링이 제공하는 SessionAttribute (0) | 2022.10.08 |
---|---|
[Spring] 로그인구현5_세션 직접 구현하고 적용하기 (0) | 2022.10.07 |
[Spring] 로그인구현4_세션 사용하는 이유 (0) | 2022.10.07 |
[Spring] 로그인구현3_쿠키 활용 시 발생하는 문제 (1) | 2022.10.07 |
[Spring] 로그인구현2_쿠키 활용 (0) | 2022.10.07 |