11월 27일 수요일
AM 알고리즘 풀이
PM 강의 수강, 과제 수행
💡 Today Issue
🤔 나의 생각 + 배운 것
영속성 전이(Casecade)
단순히 Entity를 저장, 삭제할 때 연관된 Entity에도 동일한 작업을 적용한다.
단일 Entity에 완전히 종속적인 경우 생명주기가 같다면 사용한다.
블로그 글의 댓글 or 상품의 상품 이미지
Casecade = Cascade.Type.ALL
- ALL : 모두적용
- PERSIST : 영속
- REMOVE : 삭제
- MERGE
- REFRESH
- DETACH
고아 객체
부모 엔티티와 연관관계가 끊어진 자식 Entity를 자동으로 삭제
orphanRemoval = true / default : true
트랜잭션 전파
트랜잭션
![](https://velog.velcdn.com/images/hardlife/post/2e007e51-73fd-43c3-bfcc-51fd4d9dfc56/image.png)
위 사진은 트랜잭션의 상태이다.
트랜잭션 전파란 한 트랜잭션이 다른 트랜잭션 내에서 어떻게 동작할지 결정하는 규칙
트랜잭션 간의 우선순위를 정하는 것 같다.
REQUIRED
- REQUIRED는 스프링이 제공하는 기본적인(DEFAULT) 전파 속성으로, 기본적으로 2개의 논리 트랜잭션을 묶어 1개의 물리 트랜잭션을 사용하는 것이다. 앞선 예시로 살펴본 경우가 REQUIRED에 해당하며, 내부 트랜잭션은 기존에 존재하는 외부 트랜잭션에 참여하게 된다.
![](https://velog.velcdn.com/images/hardlife/post/d85bf09c-8b3e-48b1-88bb-a5323c0ccc19/image.png)
REQUIRES_NEW
- REQUIRES_NEW는 외부 트랜잭션과 내부 트랜잭션을 완전히 분리하는 전파 속성이다. 그래서 2개의 물리 트랜잭션이 사용되며, 각각 트랜잭션 별로 커밋과 롤백이 수행된다. 이를 그림을 표현하면 다음과 같다.
![](https://velog.velcdn.com/images/hardlife/post/f8ff9bc4-fa5a-4f53-8d6c-2400c72a922f/image.png)
트랜잭션 전파 속성
![](https://velog.velcdn.com/images/hardlife/post/57da2f63-61f9-4edb-8361-66dabdaa59db/image.png)
🕐회고
열심히 하자