주요 포인트!
Set
으로 바꾼다고 해결되지 않을 수 있다. Cartesian Product 로 인해서 어떤 상황에서는 문제가 더 커진다.
따라서 가장 올바른 해결 방법은 1번 쿼리에 1개의 association 만 조회하기!
참고: https://vladmihalcea.com/hibernate-multiplebagfetchexception/
주요 포인트!
Set
으로 바꾼다고 해결되지 않을 수 있다. Cartesian Product 로 인해서 어떤 상황에서는 문제가 더 커진다.
따라서 가장 올바른 해결 방법은 1번 쿼리에 1개의 association 만 조회하기!
참고: https://vladmihalcea.com/hibernate-multiplebagfetchexception/
implementation("com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.8.1")
2023-02-11 14:15:58.653 DEBUG 54753 --- [ main] org.hibernate.SQL :
/* insert datajpa.entity.Member
*/ insert
into
member
(username, id)
values
(?, ?)
2023-02-11 14:15:58.654 INFO 54753 --- [ main] p6spy : #1676092558654 | took 0ms | statement | connection 3| url jdbc:h2:tcp://localhost/~/datajpa
/* insert datajpa.entity.Member */ insert into member (username, id) values (?, ?)
/* insert datajpa.entity.Member */ insert into member (username, id) values ('memberA', 1);
2023-02-11 14:15:58.655 INFO 54753 --- [ main] p6spy : #1676092558655 | took 0ms | commit | connection 3| url jdbc:h2:tcp://localhost/~/datajpa
application.yml 에서 logging.level.org.hibernate.type: trace
는 생략해도 된다.
p6spy 사용하기 때문에 파라미터가 중복되서 출력이 된다.
운영환경에서 성능 확인하고 사용할지 말지 결정하기
spring-boot 2.7.8 에 p6spy 1.9.1 버전을 사용할 경우 로그에 파라미터가 바인딩되지 않는 현상이 있음.
jdbc:h2:~/[database_name]
ex)
jdbc:h2:~/h2db
jdbc:h2:tcp://localhost/~/[database_name]
ex)
jdbc:h2:tcp://localhost/~/h2db
```yaml
logging.level:
org.springframework.jdbc.datasource.DataSourceTransactionManager: debug
org.springframework.orm.jpa.JpaTransactionManager: debug
org.hibernate.resource.transaction: debug
```