Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- aws #아키텍트 #과정 #vpc #인프라 구축 #퍼블릭 서브넷 #안에 #ec2 인스턴스 #ami #생성 #firewall
- aws #아키텍트 #과정 #vpc #인프라 구축 #session manager #curl #명령어 #private #instance
- aws #아키텍트 #과정 #vpc #인프라 구축 #php #웹페이지 #http #public #instance
- haproxy #wordpree #php #linux #가상화 #가상머신 #내용정리
- samba #가상머신 #daemon
- aws #아키텍트 #과정 #vpc #인프라 구축
- aws #아키텍트 #과정 #vpc #인프라 구축 #퍼블릭 #프라이빗 #서브넷 #igw #route53 #routing table #ec2 #security group #firewall
- 쓰레드 #쓰레드풀 #프로세스
- aws #아키텍트 #과정 #vpc #인프라 구축 #public subnet #igw #curl #명령어 #http
- aws #아키텍트 #과정 #vpc #인프라 구축 #퍼블릭 #보안그룹 #생성 #http #ipv4
- aws #아키텍트 #과정 #vpc #인프라 구축 #vpc #nat #gateway #private subnet
- storage #로컬스토리지 #세션스토리지 #백그라운드 서비스
- mysql #linux #설정 #wordpress #웹사이트 #db 연결 #
- 프로세스 #CPU #시공유 #커널
- aws #클라우드 #퍼블릭 클라우드 #아키텍트 #과정
- 비트 #바이트 #이진수
- aws #아키텍트 #과정 #s3 #bucket #생성 #이미지업로드
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #AI #서버 #자동화 #SQL #기본문법 #데이터베이스 #웹개발
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #딥러닝 #AI #서버 #자동화 #SQL #기본문법 #데이터베이스
- aws #아키텍트 #과정 #vpc #인프라 구축 #public subnet #internet gateway #연결
- ipv4 #private #public #instance #curl #연결성 검증 #session manager
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #AI #서버 #자동화 #SQL #기본문법 #데이터베이스
- aws #아키텍트 #과정 #vpc #인프라 구축 #public subnet #private subnet
- aws #아키텍트 #과정 #vpc #인프라 구축 #public subnet #route53 #igw #연결
- 공간복잡도 #공간자원 #캐시메모리 #SRAM #DRAM #시간복잡도
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #OSI #ISO #AI #서버 #자동화 #SQL #기본문법 #데이터베이스 #DBMS #Oracle #MongoDB #아키텍쳐 #DB
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #딥러닝 #AI #서버 #자동화 #SQL #기본문법 #데이터베이스 #DBMS #Oracle #MongoDB #아키텍쳐 #DB
- aws #아키텍트 #과정 #vpc #인프라 구축 #private #resource #security #group
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #AI #서버 #자동화 #SQL #KDT #기본문법 #데이터베이스 #Computer #Science #CPU #메모리
- aws #아키텍트 #과정 #vpc #인프라 구축 #private subnet #ec2 #인스턴스 #elastic compute #vm
Archives
- Today
- Total
요리사에서 IT개발자로
스파르타 부트캠프 Spring Master 3강 고아Entity 삭제(orphanRemoval) 본문
CACADE의 REMOVE옵션을 적용하면
해당 Entity 객체를 삭제할 때 연관된 Entity 객체들을 자동 삭제할 수 있다.
https://hs-backend.tistory.com/166
REMOVE 옵션같은 경우 연관된 Entity를 제거했다해서
자동으로 해당 User Entity가 삭제되지 않는다?
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@OneToMany(mappedBy = "user",cascade = {CascadeType.PERSIST,CascadeType.REMOVE})
private List<Food> foodList = new ArrayList<>();
public void addFoodList(Food food) {
this.foodList.add(food);
food.setUser(this); //외래키 설정
}
}
Robbie의 user_id 는 1
Food 테이블에서 Robbie가 주문한 음식들은
고구마피자, 아보카도피자, 후라이드 치킨이다.
@Test
@Transactional
@Rollback(value = false)
@DisplayName("연관관계 제거")
void test1() {
// 고객 Robbie 를 조회합니다.
User user = userRepository.findByName("Robbie");
System.out.println("user.getName() = " + user.getName());
// 연관된 음식 Entity 제거 : 후라이드 치킨
Food chicken = null;
for (Food food : user.getFoodList()) {
if(food.getName().equals("후라이드 치킨")) {
chicken = food;
}
}
if(chicken != null) {
user.getFoodList().remove(chicken);
}
// 연관관계 제거 확인
for (Food food : user.getFoodList()) {
System.out.println("food.getName() = " + food.getName());
}
}
실행을하면 후라이드 치킨이 삭제되고 연관관계도 삭제되어야하는데....
연관관계는 제거했으나
데이터는 그대로 남아있다?
JPA에서는 이를 간편하게 처리할 수 있도록
orphanRemoval옵션을 제공한다.
@OneToMany(mappedBy = "user",cascade = CascadeType.PERSIST,orphanRemoval = true)
orphanRemoval옵션 추가 코드
package com.sparta.jpaadvance.entity;
import jakarta.persistence.*;
import lombok.Getter;
import lombok.Setter;
import java.util.ArrayList;
import java.util.List;
@Entity
@Getter
@Setter
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@OneToMany(mappedBy = "user",cascade = CascadeType.PERSIST,orphanRemoval = true)
private List<Food> foodList = new ArrayList<>();
public void addFoodList(Food food) {
this.foodList.add(food);
food.setUser(this); //외래키 설정
}
}
삭제 테스트 코드를 변경하지 않고 실행을 하면
Delete가 수행되어 후라이드 치킨데이터가 삭제된다.
orphanRemoval옵션도
REMOVE 옵션과 마찬가지로 Robbie Entity를 삭제하면
연관 Food Entity가 자동삭제된다.
orphanRemoval이나 REMOVE옵션 사용하면
연관된 Entity가 다른 곳에서 참조하고있는지 아닌지를 확인해야 한다.
A는 B,C 연관관계
B는 C를 연관 할때
B를삭제하면 C도삭제된다.
A는 C도 B도없다.
orphanRemoval같은 경우 @ManyToOne같은 에너테이션에서 사용할 수없다.
반응형
'Spring' 카테고리의 다른 글
스파르타 부트캠프 SpringBoot JWT인증, 인가 (0) | 2024.06.05 |
---|---|
스파르타 부트캠프 SpringBoot @Validation란 (0) | 2024.05.31 |
스파르타 부트캠프 Spring Master 3강 영속성 전이 (0) | 2024.05.29 |
스파르타 부트캠프 Spring Master 3강 지연로딩과 즉시로딩 (0) | 2024.05.29 |
스파르타 부트캠프 Spring Master 3강 Entity @ManyToMany와 중간테이블 (0) | 2024.05.28 |