최적화를 위해 Transaction context안에서 Entity의 변경사항이 있더라도 기본적으로 영속성 Context에서 관리하다가 실제로 DB에 변경사항을 반영하는 것은(=flush) FlushMode에 따라 결정된다.
session.flush() | commit | 영속성 컨텍스트의 상태가 쿼리 결과에 영향을 미치는 경우 | |
---|---|---|---|
ALWAYS | O | O | O |
AUTO (= default) | O | O | O |
COMMIT | O | O | X |
MANUAL | O | X | X |
(ALWAYS의 경우에는 항상 flush 된다.) |
영속성 컨텍스트의 상태가 쿼리 결과에 영향을 미치는 경우 예시
userRepository.save(new User());
val users = userRepository.findAll(); // flush