[JPA, Kafka] @Transactional과 Kafka 메세지 전송 시점
·
Spring/JPA
카프카와 트랜잭션의 수행 시점Kafka와 JPA를 함께 사용하면 수행되는 시점에서 차이가 있다. 우선 @Transactional을 적용한 경우 어떤 시점에 트랜잭션이 생성되고 수행되는지 확인해야 한다.그림을 통해 먼저 확인해보자. 유저의 요청이 들어오면 Controller 에서 요청을 받아 Service Layer에서 request에서 받은 요청 또는 조회해서 반환할 내용을 DB에서 가져오게된다. 데이터의 변화가 발생했다면 @Transactional은 영속성 컨텍스트에 있는 1차 캐시(한 번 이미 조회하여 데이터가 있다고 가정)와 Snapshot을 비교하게 되는데 이때 더티체킹을 하여 변화가 있다면 Update 구문을 발생하게 된다. 이 쿼리는 메서드가 끝나는 시점에 트랜잭션이 수행되고 DB에 커밋되게 ..