@Transactional

상황에 따른 Hikari CP의 커넥션 풀 상태가 궁금해졌습니다.@Transactional 어노테이션에 따라 active 가 되고 언제 다시 idle로 돌아가는지 알아보기 위해 모니터링을 위한 준비를 했습니다.다음과 같은 클래스 구조에서 확인해 보겠습니다.다음과 같이 테스트 합니다.1. 먼저 facade 클래스의 메서드가 실행되면 Thread.sleep으로 많은 일을 처리했다고 가정합니다.2. @Transactional 어노테이션이 걸려있는 서비스의 메서드를 호출합니다. 각 과정 사이에 HikariCP 로그를 찍어 Connection pool 상태를 확인합니다.자세한 소스코드는 다음 github를 참고해 주세요. 먼저 HikariCP를 모니터링하기 위해 application.yml 에 다음 설정을 추가합..
같은 팀원의 코드리뷰 중 JPA 변경감지를 사용하지 않고 명시적으로 saveAll 메서드를 호출하고 있는 코드를 발견하였습니다.변경감지를 사용하여 처리하는 게 어떻겠냐고 제안하였고 팀원 분께서는 변경감지가 동작하지 않는다고 하였습니다.메서드에는 @Transactional 어노테이션이 걸려있었고 트랜잭션 커밋 시 영속성 컨텍스트가 flush 되기 때문에 저는 동작할 것이라고 예상했는데 말이죠. 팀원 분께 괜찮다면 제가 한 번 실행해 봐도 되냐고 여쭤본 후 실행해 보니 정말 변경감지가 동작하지 않았습니다!🫨계속 확인해 보다가 이상한 점을 발견했습니다.팀원 분이 작성하신 코드는 다음과 같은 구조를 가지고 있었습니다.@Servicepublic class SelfInvocation { public Stri..
@Trasactional 어노테이션의 propagation에 대해 알아보고 중첩된 트랜잭션을 사용하게 될 때 생기는 문제에 대해 알아보겠습니다. @Transactional 어노테이션의 propagation 속성에는 총 7가지의 속성이 있습니다. public enum Propagation { REQUIRED(0), SUPPORTS(1), MANDATORY(2), REQUIRES_NEW(3), NOT_SUPPORTED(4), NEVER(5), NESTED(6); private final int value; private Propagation(int value) { this.value = value; } public int value() { return this.value; } } Propagtaion 속성 ..
코드리뷰를 하던 중 동료 개발자 분 코드에서 1건 저장 행위만 하는 Service 레이어 메서드의 @Transactional 이 없는 것을 발견했습니다. 나: "어? 이게 있어야하지 않을까요?" 동료 개발자 : "1개 만 저장하는 건데 있어야 하나요?" 생각해 보니 딱히 이유를 찾지 못했습니다. 어차피 spring-data-jpa 구현체인 SimpleJpaRepository의 save 메서드에서 @Transactional 이 걸려있습니다. 분명 제가 본 강의에서는 서비스 레이어의 클래스에는 @Transactional(readOnly=true) 어노테이션을 붙이고 쓰기 메서드에는 @Transactional을 붙이는 방식을 많이 활용한다고 했는데 이유가 기억나지 않았습니다. 조금 더 검색해 본 결과 다음과 ..
Java ChcekdException, UncheckedException과 Srping에서 DB @Transactional 어노테이션을 사용했을 때 어떻게 되는지에 대한 글입니다. Exception은 자바에 대한 부분이고, @Transactional은 Spring에 대한 부분이라 카테고리를 Java로 잡아야 할지, Spring 으로 잡아야 할지 굉장히 고민되었던 부분입니다.😅 일단 자바의 Exception은 크게 두 부류로 나뉩니다. Checked Exception과 RuntimeException을 상속받은 Unchecked Exception으로 나뉘어집니다. RuntimeException은 이름에서도 알 수 있듯이 실행 시 발생하는 Exception이고, Checked Exception은 컴파일 시 확..
infitry
'@Transactional' 태그의 글 목록