JPA
[QueryDSL] JPA에서 MySQL 비트연산하는 방법
서비스를 개발하다보면 쿼리에서 비트 연산이 필요한 경우가 종종 발생합니다. 이 때 MyBatis를 사용한다면 문제가 되지 않지만, JPA와 QueryDSL을 사용하고 있다면 이들이 비트 연산 기능을 제공하지 않고 있기 때문에 문제가 발생합니다. 이번 포스팅에서는 제가 MySQL + JPA + QueryDSL 환경에서 비트연산을 구현하는 과정과 결과를 소개하려고 합니다. 예시 상황 요구사항 사용자는 자신이 관심있는 취미를 여러개 선택해 저장할 수 있습니다. 관리자는 특정 취미를 선택한 사용자 목록을 조회할 수 있습니다. 샘플 코드 취미 옵션(HobbyType) @Getter @AllArgsConstructor public enum HobbyType { READING(1), SPORTS(2), MUSIC(4..
[Spring Data JPA] Auditing에 ZonedDateTime 사용하기
들어가며 JPA에는 엔티티의 생성 일자와 최종 수정일자, 생성자와 최종 수정자를 entityManager에서 persist하기 전에 자동으로 현재 일시로 세팅해주는 기능이 존재합니다. JPA Auditing이라고 하는데요, 대부분의 경우 이 Auditing 기능을 @MappedSuperclass로 만들고 엔티티 클래스에서 상속받도록 구현합니다. 이번 포스팅은 이 JPA Auditing 중 생성 일자와 최종 수정일자 필드의 타입에 관한 포스팅입니다. 문제가 뭐였냐면 프로젝트의 날짜 타입을 ZonedDateTime으로 통일함에 따라, Auditing의 @CreatedDate와 @LastModifiedDate 필드 또한 ZonedDateTime으로 변경하게 되었습니다. 단순히 필드의 자료형만 변경하면 될 줄 ..