본문 바로가기
반응형

Spring data JPA5

JPA Entity Select에서 Update 쿼리 발생할 경우 JPA Entity를 단순히 조회만 하였는데도, 예상치 못하게 Update 쿼리가 발생하는 경우가 있습니다. 이를테면 다음과 같은 경우인데요. find로 조회만 하는데,다음과 같이 select와 update 쿼리가 발생 하였습니다.신기한 것은 전체 컬럼에 대한 Update 쿼리가 발생한것입니다. 이렇게 트랜잭션 내에서 Update 쿼리가 발생하면 보통은 Dirty Checking이 발생했음을 의심해볼만 한데요. 의심이라고 말씀드리는 이유는 실제로 다른 원인이 있을수도 있기 때문입니다. 자 그럼 왜 이렇게 발생했는지 실제 예제 코드와 함께 보겠습니다. 1. 예제 코드 먼저 위에서 발생한 Entity를 비롯한 서비스 코드는 다음과 같습니다. Order @Getter @NoArgsConstructor @Ent.. 2020. 11. 28.
Querydsl (JPA) 에서 Cross Join 발생할 경우 JPA 기반의 환경에서 Querydsl를 사용하다보면 @OneToOne 관계에서 Join 쿼리 작성시 주의하지 않으면 Cross Join이 발생할 수 있습니다. CrossJoin 이란 집합에서 나올 수 있는 모든 경우를 이야기 합니다. 예로 A 집합 {a, b}, B 집합 {1,2,3}이며 이들의 CrossJoin은 AxB로 다음과 같습니다. {(a, 1), (a, 2), (a, 3), (b, 1), (b, 2), (b, 3)} 당연히 일반적인 Join보다 성능상 이슈가 발생하게 됩니다. 이번 시간에는 어떤 경우에 이런 Cross Join이 발생하는지, 어떻게 해결할 수 있는지 확인해보겠습니다. 모든 코드는 Github에 있습니다. 1. 테스트 환경 테스트 환경은 다음과 같습니다. Spring Boot .. 2020. 11. 16.
[DynamoDB] Spring Data DynamoDB와 JPA 함께 적용후 문제 발생시 해결방법 모든 코드는 Github에 있습니다. Spring Data JPA를 사용중인 기존 프로젝트에 Spring Data DynamoDB 를 바로 적용하면 아래와 같은 문제들이 발생할때가 있습니다. Caused by: java.lang.IllegalArgumentException: Not a managed type: class XXX 혹은 BeanDefinitionOverrideException: Invalid bean definition with name 'XXXRepository' defined in null: Cannot register bean definition 어떨때 이런 문제가 발생하는지, 어떻게 해결하는지 빠르게 확인해보겠습니다. 1. 문제 상황 먼저 JPA만 프로젝트에 추가해서 테스트를 진행해보.. 2020. 3. 7.
[Querydsl] 서브쿼리 사용하기 안녕하세요! 이번 시간에는 Querydsl에서의 Subquery 기본 가이드를 진행합니다. 개인적으로 ORM을 사용하며, 객체지향적으로 엔티티가 구성되어있으면 서브쿼리가 필요한 일은 거의 없다고 생각하는데요. 혹시나 필요한 분들이 계시면 도움이 되셨으면 합니다. 그럼 시작합니다! 모든 코드는 Github에 있으니 참고하세요 :) 1. select Sub Query 첫번째는 select절의 서브쿼리입니다. 도메인에 대한 설명보다는 Querydsl 코드가 좀 더 도움이 되실것 같아 코드로 바로 설명드리겠습니다. Spring Data Jpa에서 Querydsl 적용을 어떻게 하는지는 이전 포스팅을 참고해보세요 :) Querydsl의 코드는 아래와 같습니다. 여기서 주의깊게 봐야할 코드는 ExpressionUt.. 2019. 1. 18.
Spring Boot Data JPA 2.0 에서 id Auto_increment 문제 해결 안녕하세요? 이번 시간엔 Spring Boot JPA 2.0 에서 PK의 Auto_increment 문제를 알아보려고 합니다. 모든 코드는 Github에 있기 때문에 함께 보시면 더 이해하기 쉬우실 것 같습니다. (공부한 내용을 정리하는 Github와 세미나+책 후기를 정리하는 Github, 이 모든 내용을 담고 있는 블로그가 있습니다. ) 문제 회사의 신규 시스템 구축을 Spring Boot 2.0으로 진행하게 되었습니다. 진행 도중 Spring Data Jpa의 @GeneratedValue가 기존과 다르게 작동하는걸 발견하게 되었습니다. 예를 들어 아래와 같이 1.5.x 에서 사용하던대로 엔티티 클래스를 생성했습니다.2.0에서도 기본 전략이 AUTO임을 확인하고 테스트 코드를 작성했는데요. 이렇게 M.. 2018. 5. 12.

728x90