From 1c3a71c80a5ca711ec2d3764eda7f18f416714ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EC=A3=BC=EC=9B=90?= Date: Wed, 20 Dec 2023 23:41:18 +0900 Subject: [PATCH 1/2] =?UTF-8?q?Spring=20Transaction=20Propagation=20?= =?UTF-8?q?=EC=98=B5=EC=85=98=20=EC=84=B9=EC=85=98=20=EC=9D=B4=EB=8F=99,?= =?UTF-8?q?=20=EC=84=A4=EB=AA=85=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index e825a9d..9db230f 100644 --- a/README.md +++ b/README.md @@ -40,7 +40,7 @@ print("hello world!") - [면접 꿀팁](#면접-꿀팁) - [Special Thanks to](#Special-Thanks-to) -## Contributors +## Contributorsㅔ @@ -1013,6 +1013,18 @@ print("hello world!")

모든 의존성을 생성자를 통해 주입하면, 인스턴스 생성 시 즉시 어떠한 동작을 실행할 수 있습니다. 또한 추가적인 설정은 필요하지 않으며, 뜻하지 않게 의존성과 설정값을 빠뜨리는 일이 발생하지 않고 테스트에도 용이합니다.

+
+ 스프링 트랜잭션 Propagation(전파) 옵션을 설명해주세요. +
+

대기업면접에서 나왔던 질문으로 트랜잭션 고립단계와 같이 질문할 가능성이 있습니다.

+

스프링 트랜잭션 Propagation은 트랜잭션 동작 도중 다른 트랜잭션을 호출(실행)하는 상황에 선택할 수 있는 옵션입니다.

+

@Transactional 의 propagation 속성을 통해 피호출 트랜잭션의 입장에서는 호출한 쪽의 트랜잭션을 그대로 사용하거나, 새로운 트랜잭션을 생성하는 등의 동작을 선택할 수 있습니다.

+

REQUIRED(디폴트): 이미 트랜잭션이 실행 중이라면 같은 트랜잭션 내에서 실행하고, 실행 중인 트랜잭션이 없을 경우 새로운 트랜잭션을 생성합니다.

+

REQUIRES_NEW: 이미 트랜잭션이 실행 중이어도 새로운 트랜잭션을 생성합니다. 새로 생성한 트랜잭션은 부모 트랜잭션과 독립적으로 커밋/롤백됩니다.

+

이 외에도 SUPPORTS, MANDATORY, NOT_SUPPORT, NEVER, NESTED 옵션들이 있습니다.

+

(실무에서는 주로 REQUIRED, REQUIRES_NEW 를 많이 사용합니다)

+
+ #### JPA
@@ -1029,16 +1041,6 @@ print("hello world!")
-
- JPA Propagation 전파단계를 설명해주세요. -
-

대기업면접에서 나왔던 질문으로 트랜잭션 고립단계와 같이 질문할 가능성이 있습니다.

-

JPA Propagation은 트랜잭션 동작 도중 다른 트랜잭션을 호출(실행)하는 상황에 선택할 수 있는 옵션입니다.

-

@Transactional의 propagation 속성을 통해 피호출 트랜잭션의 입장에서는 호출한 쪽의 트랜잭션을 그대로 사용할 수도 있고, 새롭게 트랜잭션을 생성할 수도 있습니다.

-

REQUIRED(디폴트): 부모 트랜잭션 내에서 실행하며 부모 트랜잭션이 없을 경우 새로운 트랜잭션을 생성합니다.

-

이 외에도 종류가 REQUIRES_NEW, SUPPORTS, MANDATORY, NOT_SUPPORT, NEVER, NESTED 가 있지만 신입이 실제로 다뤄본 경험이 적기 때문에 REQUIRED(디폴트)값만 답변했습니다.

-
-
JPA를 쓴다면 그 이유에 대해서 설명해주세요.
From 27348ccb0a986ed93abfcf06390d64b9e332ebbe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EC=A3=BC=EC=9B=90?= Date: Wed, 20 Dec 2023 23:43:15 +0900 Subject: [PATCH 2/2] =?UTF-8?q?=EC=98=A4=ED=83=80=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9db230f..a029ab2 100644 --- a/README.md +++ b/README.md @@ -40,7 +40,7 @@ print("hello world!") - [면접 꿀팁](#면접-꿀팁) - [Special Thanks to](#Special-Thanks-to) -## Contributorsㅔ +## Contributors