일을 하면서 OneToMany 관계를 여럿 가지는 부모 엔티티를 자식과 함께 가져와야만 하는 경우들을 마주친다.때로는 비즈니스 제약으로 규모는 크지 않으나 부모 - 자식1 - 자식2 등의 2개 이상의 계층을 한 번에 가져와야 하는 경우도 있다. 왜 hibernate는 단일 쿼리로의 다중 List 초기화를 방지하며,왜 부모는 자식을 항상 Set이 아닌 List로 초기화할까? 환경: hibernate-core 6.5.3 Final MultipleBagFetchException하나의 쿼리에서 둘 이상의 List를 Fetch Join으로 초기화하는 것은 불가하다. Lazy Loading으로 Parent의 두 Child 컬렉션을 설정해둔 뒤 두 개의 Fetch Join으로 한 번에 연관된 데이터를 가져오려 하면 ..
JPA를 통한 테스트 구현 과정에서 entityManager의 merge()를 사용해 준영속인 엔티티를 다시 영속화하고 변경 감지를 아래처럼 사용하려 했으나 제대로 적용되지 않았다. entityManager.merge(entity); entity.proceed(); // 상태 변경 메서드 entityManager.flush(); 준영속 상태인 엔티티를 다시 영속화하고 상태를 변경하였는데 변경 감지가 동작하지 않았다. merge() 시에 select 쿼리가 나가기는 하나 proceed() 시에 update 쿼리가 나가지는 않았다. proceed() 이후 entityManager.contains(entity)로 영속화 여부를 확인해도 false가 출력되었다. 아래와 같이 순서를 바꾸니 변경 내용을 정상적으로..
최근의 프로젝트에서 Spring Data JPA를 통해 상속관계를 사용했으나 적절하지 않음을 깨닫고 언제 슈퍼/서브타입을 사용해야 할지 정리하는 글입니다. 확장(Enhanced, Extended) ER과 슈퍼/서브타입 RDB의 엔티티 릴레이션(ER), 테이블은 정보를 저장하는 기본 단위이다.전통적인 릴레이션 모델링만으로는 현실의 다양한 데이터들을 효율적으로 나타내기 어려워 이를 조금 더 추상화한 확장 ER의 개념이 나오게 되었고 데이터의 상속 관계를 나타내기 위한 슈퍼/서브타입에 대한 개념이 여기에 포함된다.(명칭은 Super class & Subclass라 부르기도 하나 여기서는 슈퍼/서브타입 관계라 칭한다) 전통적인 모델링에서는 어떤 테이블의 하나의 열에 저장된 외래 키를 통해 다른 하나의 테이블만..
- Total
- Today
- Yesterday
- MySQL
- GitHub Discussion
- Java
- 생성자 주입
- 함수형 인터페이스
- 의존성 주입
- java switch case
- Spring Boot Monitoring
- 우테코 프리코스
- stubbing
- GitHub Discussion Template
- Fromtail
- 람다식
- JPA JSON
- 우테코 5기
- invokedynamic
- 우테코
- multiplebagsfetchexception
- JPA
- MySQL 이벤트 스케줄
- logback-spring.xml
- 스프링
- Spring
- Payload 암호화
- RandomPort
- 자바
- Spring 테스트
- Jenkins 예약 배포
- springboottest
- GitHub Discussion 템플릿
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |