소개
게시글
질문&답변
2021.08.05
상속관계매핑 중 JOINED 질문드립니다.
안녕하세요! 어제 너무 급하게 이슈 올리느라 인삿말도 빼먹었네요ㅠㅠ다행히 이슈 원인 찾아서 해결했습니다. 아래에 내용 공유드립니다. 현재 저는 5.2.18.Final 버전의 하이버네이트를 사용하고 있는데, 위 문제상황은 해당 버전에서 발생하는 버그입니다. 하이버네이트 버전을 5.4.32.FINAL 로 올리면 정상적으로 잘 돌아갑니다. (https://hibernate.atlassian.net/browse/HHH-13617) 다만 좀더 원인을 추측해보자면, JPA 에서는 키 생성전략을 GenerationType.IDENTITY 로 사용하면 JPA의 쓰기지연 전략(write-behind flushing strategy) 과 충돌되기때문에 내부적으로 batch_size 로 처리하지 않고, 단건으로 insert 쿼리를 처리하는 것으로 알고있습니다. 하지만 5.2.18.Final 버전에서 InheritenceType.JOINED 을 GenerationType.IDENTITY 전략과 같이 사용하여 엔티티 저장 시, batch_size 를 사용하지 않는 상황에서 부모 엔티티의 insert 쿼리 + 자식 엔티티의 insert 쿼리 총 2개의 쿼리가 한번에 나가게 되고 이것이 쓰기지연 전략(write-behind flushing strategy) 에 위배되어 버그가 발생한 것이 아닐까 생각이됩니다. 다행히 하이버네이트 최신 버전에서는 이 버그가 수정된 것으로 보입니다. 그래서 제가 찾은 해결법은 아래 2가지 입니다. 1. 하이버네이트의 버전을 높여준다. 2. jpa.properties.hibernate.jdbc.batch_size 설정을 아예 OFF 하거나 1로 사용한다. 잘못된 내용이나 더 좋은 의견 있으시면 공유 부탁드리겠습니다!
- 1
- 2
- 280
질문&답변
2020.01.13
Window user를 위한 버그해결법입니다
+) 추가 의견입니다. 윈도우 사용자의 경우, java -jar 명령어를 통해 jar 파일을 실행하려면 jar 파일이 있는 해당 디렉터리로 이동하셔서 위에 적어주신 명령어를 입력하거나 jar파일이 위치한 경로를 포함해서 명령어를 실행해야합니다.
- 10
- 6
- 317