diff --git a/README.md b/README.md index e825a9d..a029ab2 100644 --- a/README.md +++ b/README.md @@ -1013,6 +1013,18 @@ print("hello world!")
모든 의존성을 생성자를 통해 주입하면, 인스턴스 생성 시 즉시 어떠한 동작을 실행할 수 있습니다. 또한 추가적인 설정은 필요하지 않으며, 뜻하지 않게 의존성과 설정값을 빠뜨리는 일이 발생하지 않고 테스트에도 용이합니다.
+대기업면접에서 나왔던 질문으로 트랜잭션 고립단계와 같이 질문할 가능성이 있습니다.
+스프링 트랜잭션 Propagation은 트랜잭션 동작 도중 다른 트랜잭션을 호출(실행)하는 상황에 선택할 수 있는 옵션입니다.
+@Transactional 의 propagation 속성을 통해 피호출 트랜잭션의 입장에서는 호출한 쪽의 트랜잭션을 그대로 사용하거나, 새로운 트랜잭션을 생성하는 등의 동작을 선택할 수 있습니다.
+REQUIRED(디폴트): 이미 트랜잭션이 실행 중이라면 같은 트랜잭션 내에서 실행하고, 실행 중인 트랜잭션이 없을 경우 새로운 트랜잭션을 생성합니다.
+REQUIRES_NEW: 이미 트랜잭션이 실행 중이어도 새로운 트랜잭션을 생성합니다. 새로 생성한 트랜잭션은 부모 트랜잭션과 독립적으로 커밋/롤백됩니다.
+이 외에도 SUPPORTS, MANDATORY, NOT_SUPPORT, NEVER, NESTED 옵션들이 있습니다.
+(실무에서는 주로 REQUIRED, REQUIRES_NEW 를 많이 사용합니다)
+대기업면접에서 나왔던 질문으로 트랜잭션 고립단계와 같이 질문할 가능성이 있습니다.
-JPA Propagation은 트랜잭션 동작 도중 다른 트랜잭션을 호출(실행)하는 상황에 선택할 수 있는 옵션입니다.
-@Transactional의 propagation 속성을 통해 피호출 트랜잭션의 입장에서는 호출한 쪽의 트랜잭션을 그대로 사용할 수도 있고, 새롭게 트랜잭션을 생성할 수도 있습니다.
-REQUIRED(디폴트): 부모 트랜잭션 내에서 실행하며 부모 트랜잭션이 없을 경우 새로운 트랜잭션을 생성합니다.
-이 외에도 종류가 REQUIRES_NEW, SUPPORTS, MANDATORY, NOT_SUPPORT, NEVER, NESTED 가 있지만 신입이 실제로 다뤄본 경험이 적기 때문에 REQUIRED(디폴트)값만 답변했습니다.
-