JPA @Transactional 과 1차 캐시
문제JPA에서는 1차 캐시를 사용하기 때문에 같은 엔티티에 대해서는 동일성(주소값이 같음)을 만족한다고 알고 사용해왔다. 그래서 나는 객체를 비교할 때 id가 아닌 객체 그 자체로 비교해 왔다. 그런데 어느 날 id로 가지고 온 객체를 이용해 fetch join을 통해 가지고 온 객체 중 하나를 찾는 로직을 작성했는데, 하나도 못 찾는 문제가 발생했다. 확인해보니 id를 통해 가지고 온 객체와 fetch join을 통해 가지고 온 객체의 주소값이 달랐다. 결론부터 말하자면 원인은 @Transactional을 붙이지 않아 발생했다. 테스트1. @Transactional 없이 조회아래 코드는 테스트를 위해 작성한 코드로, findByIdPerson은 personRepository에서 id를 이용해 perso..
웹개발
2025. 2. 2. 20:26
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- 카프카
- 쓰레드 변수
- kafka without zookeeper
- spring boot
- kafka with raft
- 넥서스 보관주기
- API Gateway
- 제우스8
- php
- 주키퍼 없는 카프카
- 제우스8.5
- db 두개
- 스레드 동기화
- 넥서스 파일 보관주기
- s3
- volatile
- 도커
- cleanup policy
- 보관주기
- 다중 데이터소스
- 제우스 로그
- jpa 1차 캐시
- multiple datasource
- 네트워크
- AWS
- 오블완
- 티스토리챌린지
- docker
- cleanup policies
- SynchronousQueue
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함