전체 글 (53) 썸네일형 리스트형 [Spring] JPA - @OneToOne 조인 전략을 left join -> inner join 으로 변경하기 Entity 객체 조회 시 Hibernate SQL 로그를 확인해보니, @OneToOne으로 매핑한 객체에 left join(= left outer join)이 사용되는 것을 확인했다. 경험해본 RDBMS들의 Optimizer는 모두 left join보다 inner join을 사용했을 경우 성능이 더 좋았기 때문에 필수적인 경우가 아니면 left join을 모두 inner join으로 바꾸고 싶었다. 생각해보면 연관된 외래키가 nullable인 경우에는 left join으로 가져와야 하는 것이 당연하기 때문에 @ManyToOne, @OneToOne의 default 조인 전략이 left join인 것 또한 당연하다. 참고: siyoon210.tistory.com/57 JPA 조인 전략 변경하기 JPA 조인.. [Spring] JPA - Could not write JSON: Infinite recursion (StackOverflowError) 처음 이 에러를 맞닥뜨렸을 때는 "Infinite recursion"라는 메세지만 보고 단순한 순환 참조 에러인 줄 알았다. 그런데 디버깅을 해보니 에러가 발생하는 시점이 데이터를 조회하는 시점이 아니라, ResponseEntity로 조회한 객체를 리턴할 때, 즉 Entity 객체를 JSON으로 Serialize할 때라는 것을 알게 되었다. 즉, ResponseEntity가 Jackson 라이브러리를 사용하여 객체를 JSON으로 Serialize할 때 순환 참조가 일어나 JSON String이 무한정 늘어나기 때문에 StackOverflowError가 발생하는 것이다. 이에 대한 해결책은 다음 세 개이다. - JPA Entity 클래스 내에 jackson 애노테이션을 사용하는 방법(@JsonIgnore,.. [Spring] Spring REST Docs 호스트 변경 Spring REST Docs를 사용하다 보면, 위 사진처럼 default로 되어 있는 호스트(localhost)와 포트(8080)를 확인할 수 있다. 그런데, 프론트엔트나 모바일 개발자 분들의 요청으로(예를 들어, HATEOAS를 적용했을 때 호스트와 포트가 localhost:8080으로 되어 있을 경우) 이 부분을 수정해야 할 때가 종종 있다. 이 때, @AutoConfigureRestDocs 애노테이션으로 Spring REST Docs의 설정 사항들을 자동 설정했다면 호스트와 포트를 간편하게 바꿀 수 있다. @SpringBootTest @RunWith(SpringRunner.class) @AutoConfigureMockMvc @AutoConfigureRestDocs(uriHost = "myhost".. 이전 1 2 3 4 5 6 7 ··· 18 다음