inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Trong thực tế! Sử dụng Spring Boot và JPA1 - Phát triển ứng dụng Web

삭제 쿼리 질문입니다...

Đã giải quyết

534

ejk5701jin9956

24 câu hỏi đã được viết

0

안녕하세요, 삭제가 궁금해서 글을 작성하게 되었습니다.

엔티티는 총 두 개로 n:1의 연관관계로 설정했습니다. n 부분에 해당하는 엔티티에 매 정해진 시간마다 오픈 api에서 데이터를 받고디비에 넣고 있습니다. 하지만 n에서 기존에 받은 데이터들은 새롭게 데이터 받게 되면 필요가 없어서 삭제를 해야 합니다. 그리고 n 부분을 삭제하게 될 경우, 1에 해당하는 엔티티는 삭제가 되면 안되는 상황입니다. 혹시 deleteAllBatch를 사용해도 괜찮은 지 궁금해서 질문을 남기게 되었습니다. 아니면 @Query를 사용해서 삭제를 해야한다는 글을 찾긴 찾았으나 커스텀을 어떤 식의 방향으로 하는 것이 좋을지 조언 부탁드리겠습니다. 

마지막으로 항상 강의에 대해 감사한 마음으로 보고 있습니다. 좋은 강의를 만들어주셔서 정말 감사합니다.

java JPA 웹앱 spring spring-boot

Câu trả lời 2

1

y2gcoder

안녕하세요. 김어진님, 공식 서포터즈 y2gcoder입니다.

두 엔티티가 n:1 관계라면 entity 설정시 부모객체에서 @OneToMany()의 옵션 중 cascade와 orphanRemoval 속성에 대해서 알아보시면 도움이 되실 것 같습니다. 해당 부분에 대해서는 영한님의 강의 중 Java ORM 표준 JPA 프로그래밍 - 기본편 중 영속성 전이(CASCADE)와 고아객체 에서 달린 질문을 공유드리겠습니다. 
제가 김어진님의 프로젝트 엔티티 구조를 잘 모르지만, 해당 자식 엔티티들이 단일 소유자를 갖고 있다는 전제 하에  부모엔티티에서 자식 엔티티에 접근해 삭제할 때 부모 엔티티의 @OneToMany()에만 속성을 cascade=CascadeType.ALL, orphanRemoval=true 로 주면 혹시라도 부모 엔티티 삭제 시 자식 엔티티는 모두 삭제되고, 반대로 자식 엔티티만 삭제할 때는 부모 엔티티가 삭제되지 않을 것 같습니다.

삭제의 경우에는 주의만 하신다면 deleteAllInBatch를 쓰셔도 되고, Spring Data JPA를 사용하고 계신다면 @Modifying과 @Query를 사용해서 말씀하신 것처럼 JPQL 쿼리를 짜서 수행해주셔도 됩니다.
이 때는 두 경우 모두 영속성 컨텍스트를 무시하고 데이터베이스에 직접 쿼리를 수행하는 것이기 때문에, 서비스 로직에서 벌크 연산을 수행 후, 영속성 컨텍스트를 초기화 하는 과정을 거쳐주시기 바랍니다! 


감사합니다.

0

ejk5701jin9956

답변해주셔서 정말 감사합니다.!!!!!!!!

sdk 설정 오류

0

43

2

오탈자 - @Transactional

0

52

1

src/test/resources 테스트 경로 문제

0

49

1

상품 등록후 H2 db 출력 순서 바꿀 수 있나요?

0

62

1

MemberRepositoryTest 실행오류

0

73

1

boot 4.x >>> trasasction rolled back log & p6spy(영한님, 수업 자료 업데이트 해주시면 감사하겠습니다!!)

1

181

2

강의 마지막 QueryDSL 사용 부분 질문있습니다

1

135

2

클라이언트에서 isbn과 author 수정 요청을 한 경우에 대해 질문드립니다.

0

50

1

도메인 모델 패턴 vs 트랜잭션 스크립트 패턴

0

71

1

기본 생성자

0

59

1

h2 DB 연결시 jdbc url 변경 이유가 궁금합니다.

0

100

1

멤버서비스테스트 부분에서 막힙니다.

0

163

4

실무에서도 EntityManager를 이용해서 많이 작업하는 편일까요?

0

115

1

초반에 h2 다운로드 과정 꼭 필요한가요?

0

117

2

자신 필드에도 get으로 접근하는 이유가 있을까요?

0

108

1

24분 27초 연관관계 편의 메서드 위치

0

112

1

단건 주문만 가능하게 한건 의도한 부분이신가요?

0

106

2

빌드 툴, Gradle

0

57

1

h2연결은 된 것 같은데 엔티티 테이블까지 작성 후 확인해보아도 테이블이 안보입니다

0

73

2

Repository에서 EntityManager 주입 방식 차이

0

87

1

롬복과 사용자 정의 setter 메서드

0

70

1

주문 목록 조회 fetch join 질문드립니다

0

79

1

dirty checking 질문드립니다.

0

78

1

동시성 관련 질문입니다

0

72

1