Home
keencho's blog
Cancel

동일한 클래스 안에서 새로운 트랜잭션 생성하기

동일한 클래스 안에서 새로운 트랜잭션 생성하기 동일한 클래스 내에서 새로운 트랜잭션을 만들어 예외를 회피하려고 하는 경우, 의도했던 것과는 다른 결과가 나올 수 있습니다. @Transactional public void answer(Inquiry inquiry) { System.out.println(TransactionSynchronizati...

Spring Data JPA - Custom QueryDSL Repository 만들기

Spring Data JPA - Custom QueryDSL Repository 만들기 Spring Data JPA를 사용한다면 JpaRepository를 상속한 repository를 만들고 미리 정해진 키워드 들을 사용하여 메소드(쿼리)를 사용하곤 합니다. 그러나 메소드의 길이가 길어진다면 (findByNameAndAgeAndGenderAndPho...

Hibernate, Spring Data JPA, QueryDSL 에서 UNION 사용하기

JPA 에서 union 사용하기 JPA 환경에서 집합 연산자(UNION, UNION ALL, INTERSECT, EXCEPT)를 사용할 수 있을까요? JPA의 버전이 3.1까지 올라왔어도 아직 이에대한 명세, 지원은 없는 것으로 보입니다. native sql로 작성하면 안되는 쿼리는 없긴 합니다만, 추상화된 SQL을 사용할 수 없다는 단점이 존재합니다...

22년 회고

2022년 어느덧 또 한 해의 마지막 날이 되었다. 아무리 생각해도 12월 31일이 생일이면 나이를 볼 때 너무 손해인것 같다. 갓 성인이 되었을때는 좋았지만 이제는 한살 한살이 큰 부담으로 다가오는것 같다. 그래도 아직 만으로는 20대 중반임에 감사한다. 또 그때 가봐야 알겠지만 내년 6월부터는 만 나이로 통일한다고 하니 기대해 봐야겠다. 19년,...

JPA 3.1

JPA 3.1 Spring 6.0, Spring Boot 3.0 버전이 릴리즈된지 한달이 지났습니다. 현재 날짜 (2022-12-26) 기준으로는 Spring의 경우 6.0.3, Spring Boot의 경우 3.0.1 버전까지 올라왔네요. Spring Boot를 주요 서버 프레임워크로 사용하는 저로써는 Spring Data JPA가 가장 기대됩니다....

Dirty Checking

Dirty Checking 1. 개요 하이버네이트 / jpa를 사용하다보면 이미 저장된 엔티티의 경우 jpa repository의 save() 메소드를 호출하지 않아도 한 트랜잭션이 종료되면 엔티티의 변경점이 자동으로 업데이트되는 현상을 발견할 수 있습니다. var delivery = deliveryRepository.findById(1L).orE...

QueryProjection 에서 한단계 더 나아가 QueryProjectionBuilder 만들기 (2)

QueryProjection 에서 한단계 더 나아가 QueryProjectionBuilder 만들기 (2) - 개발 과정, 코드 이 포스팅에서 설명하는 코드는 한 프로젝트 내에서 사용할 수 없습니다. 라이브러리 프로젝트 A, 실제 어플리케이션 프로젝트 B 로 나뉘어야 합니다. java17, maven 을 사용합니다. 1. @QueryProj...

QueryProjection 에서 한단계 더 나아가 QueryProjectionBuilder 만들기 (1)

QueryProjection 에서 한단계 더 나아가 QueryProjectionBuilder 만들기 (1) - 개요 Querydsl을 사용해 db조회를 하는 경우 엔티티 자체를 반환하는 경우는 잘 없습니다. 대부분 필요한 필드만 지정하여 Projections를 사용하여 조회하게 되는것 같습니다. 잘 알려진 projection 방법에는 3가지가 있습니...

Spring Security custom library 만들기

Spring Security custom library 만들기 운영중인 시스템에 적용된 Spring Security custom library를 제 방식대로 바꿔보고 겸사겸사 Spring Security의 동작 방식, 원리에 대해 더 깊게 공부하고자 작성한 글입니다. 이 포스팅은 Spring Security가 어떤 방식으로 인증 / 인가 처리하...

Hibernate, JPA 에서 발생하는 Cross Join 문제 해결하기

Hibernate, JPA 에서 발생하는 Cross Join 문제 해결하기 개요 평화롭게 코딩하던 어느날, 쿼리 결과가 의도한대로 리턴되지 않는 문제가 발생하였습니다. 쿼리에 문제가 있나 싶어 자세히 살펴봤지만 (queryDSL을 사용중이었습니다.) 자바 코드상의 문제는 찾을 수 없었습니다. 데이터베이스에 날라가는 sql문을 보고 나서야 문제를 찾...