-
2021.06.13 기록장TIL 2021. 6. 13. 00:57
ToDo
- 책 읽기
- 미션
Done
- 미션
- 블로그 읽기
Weekly goal
- 책 읽기
- 블로그 읽기
Feeling
오늘은 책을 읽지 않고 미션을 진행했다.
그러다 이슈 보기 항목을 봤는데 검색 조건이 있는 항목과 uri가 같은 오류가 있었다.
이 부분은 동적으로 해결하기 위해 querydsql을 쓸 예정이다.
오늘 미션을 하다 알게 된 부분을 알아보자.
jpa. 고아 객체 orphanRemoval = true
고아 객체란 부모와 연관관계가 끊긴 엔티티를 말한다.
현재 우리의 db테이블은 위와 같은데 코드상으로 부모 엔티티(issue)가 저장되면 자식 엔티티도 저장되게 했었다.
연관관계 편의 메서드를 통해 영속성을 전이하고 저장까지는 잘 됐는데, 삭제를 하려고 하니 db에는 반영이 되지 않았다. casecade.all을 통해 삭제가 될 줄 알았지만 이것은 issue가 삭제되면 다 삭제되는 기능을 가지고 있을 뿐이었다.
그래서 자바 코드상에서 삭제(고아 객체, 연관관계를 끊음)가 되면 삭제가 되게 orphanRemoval를 작동시켰다.
https://stackoverflow.com/questions/306144/jpa-cascadetype-all-does-not-delete-orphans
JPA CascadeType.ALL does not delete orphans
I am having trouble deleting orphan nodes using JPA with the following mapping @OneToMany (cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "owner") private List bikes; ...
stackoverflow.com
[JPA] 영속성 전이와 고아 객체
특정 엔티티를 영속 상태로 만들 때 연관된 엔티티도 함께 영속 상태로 만들고 싶을 때 사용하는 옵션예) 부모 엔티티를 저장할 때 자식 엔티티도 함께 저장부모 저장할 때, em.persist(parent)연관된
velog.io
위를 진행하고 보니 에러가 발생했다.
db에서 엔티티를 가지고 오고 엔티티의 일부인 리스트를 바꿔 끼었더니 에러 발생.
하이버네이트가 관리하지 않는 리스트이니 에러. clear후 addAll을 진행하자
https://blog.leocat.kr/notes/2016/04/26/hibernate-no-longer-reference
[Hibernate]
JPA entity안에 있는 list를 바꿔서 저장했더니 갑자기 이런 오류가 뙇!!
blog.leocat.kr
모두 페치 조인 시 에러 발생
issue에 할당된 애들을 모두 패치 조인으로 가지고 오려했다. 디폴트는 lazy로 해놨기에.
하이버네이트는 bag이라는 자료구조를 사용한다.
근데 여러 개의 순서가 보장된 리스트들을 사용하면 올바르게 매핑을 할 수 없다는 것이다.
set을 통해 중복을 허용 하지 않고 하나는 리스트를 사용하면 된다. nhn을 보라
해결법은 리스트는 하나만 유지를 하고 나머지는 set으로 변경하거나 jpql을 나누거나
배치 사이즈를 늘려주는 것이다.
https://perfectacle.github.io/2019/05/01/hibernate-multiple-bag-fetch-exception/
(Troubleshooting) Hibernate MultipleBagFetchException 정복하기
TroubleSpring Data JPA를 이용하다보면 종종 org.hibernate.loader.MultipleBagFetchException: cannot simultaneously fetch multiple bags이란 메세지를 보게 된다.우선 어떤 상황에 나타나는지 한 번 살펴보자. 1234567891011121314
perfectacle.github.io
https://jojoldu.tistory.com/457
MultipleBagFetchException 발생시 해결 방법
JPA의 N+1 문제에 대한 해결책으로 Fetch Join을 사용하다보면 자주 만나는 문제가 있습니다. 바로 MultipleBagFetchException 입니다. 이 문제는 2개 이상의 OneToMany 자식 테이블에 Fetch Join을 선언했을때 발..
jojoldu.tistory.com
https://www.baeldung.com/java-hibernate-multiplebagfetchexception
https://jojoldu.tistory.com/414
Spring Batch JPA에서 N+1 문제 해결
안녕하세요? 이번 시간엔 Spring batch에서 N+1 문제 해결을 진행해보려고 합니다. 모든 코드는 Github에 있기 때문에 함께 보시면 더 이해하기 쉬우실 것 같습니다. (공부한 내용을 정리하는 Github와
jojoldu.tistory.com
https://www.baeldung.com/java-hibernate-multiplebagfetchexception
https://meetup.toast.com/posts/87
JPA N+1 쿼리 문제와 해결 : NHN Cloud Meetup
JPA N+1 쿼리 문제와 해결
meetup.toast.com
'TIL' 카테고리의 다른 글
2021.06.15 기록장 (0) 2021.06.15 2021.06.14 기록장 (0) 2021.06.14 2021.06.12 기록장 (0) 2021.06.12 2021.06.11 기록장 (0) 2021.06.11 2021.06.10 기록장 (0) 2021.06.10