티스토리 뷰
@Query 어노테이션을 향상시켜 SELECT 쿼리 뿐 아니라 INSERT, UPDATE, DELETE, DDL 쿼리를 실행시킬 수 있게 해준다.
DML, DDL @Query에 @Modifying을 선언하지 않으면 InvalidDataAccessApiUsageException이 발생한다.
📌 영속성 컨텍스트 관리를 위한 속성
clearAutomatically ( 기본 값 = false )
false → DML 쿼리를 실행(실행 후 flush()) 해도 영속성 컨텍스트의 데이터는 DML 쿼리 실행 전의 데이터다.
즉, 실제 DB의 데이터와 영속성 컨텍스트의 엔티티 데이터가 일치하지 않게 된다.
후에 데이터를 조회할 때도 1차 캐시의 데이터를 조회하기 때문에 주의가 필요하다.
true → DML 쿼리를 실행한 후 영속성 컨텍스트를 clear() 한다.
즉, DML 쿼리 실행 후 find() 메서드로 데이터를 조회하려 할 때 다시 DB에서 데이터를 조회한다.
flushAutomatically( 기본 값 = false )
쿼리 실행 전에 flush 여부를 설정하기 위한 속성이다.
이 속성의 기본 값은 false다. 그러나 실제로 코드를 실행해보면 기본 값이 false 임에도 쿼리 실행 전에 데이터가 flush()된다.
그 이유는 SpringDataJpa의 구현체 Hibernate의 flushModeType의 기본 값이 AUTO 아기 때문이다.
flushModeType
AUTO : 쿼리 실행 시 flush
COMMIT : 트랜잭션 commit 시점에 flush
📌 Reference
https://joojimin.tistory.com/71?category=1045906
https://www.baeldung.com/spring-data-jpa-modifying-annotation
'dev_note > TIL' 카테고리의 다른 글
업로드 파일 사이즈 제한하기( jQuery ) (0) | 2022.06.27 |
---|---|
ASP.NET Authorize Header에 access token 넣기 (0) | 2022.06.27 |
JpaRepository save 관련 메소드 알아보기 (0) | 2022.06.26 |
orphanRemoval = true & CascadeType.REMOVE (0) | 2022.06.24 |
Spring Boot Custom Validation Annotation 만들기 (0) | 2022.06.18 |
- Total
- Today
- Yesterday
- Nullable
- c#
- DataAnnotation
- MSSQL
- OWIN
- 고아 객체
- JPA
- 자바의 정석
- 토비의 스프링
- C# 문법
- 영속성
- spring boot
- 다이내믹 프록시
- jQuery
- uploadfive
- Effective Java
- @Modifying
- SpringBoot
- 스프링 부트 테스트
- 스프링MVC
- 준영속
- 빌더 패턴
- ASP.NET
- Spring
- JavaScript
- orphanRemoval
- JpaRepository
- default interface
- 스프링
- Java
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |