본문 바로가기
반응형

분류 전체보기278

[QueryDSL] LocalDateTime, LocalDate 파라미터 바인딩 시 'MM/dd/yyyy HH:mm:ss' 로 표시될 때 해결 방법 트러블 슈팅MyBatis 코드를 JPA + QueryDSL로 이관하는 작업을 하고 있습니다. MySQL 컬럼 중 date, datetime을 LocalDate, LocalDateTime으로 매핑하고 개발을 진행하던 중 QueryDSL에서 where(), set() 등에서 LocalDate, LocalDateTime 객체를 파라미터로 넣어서 처리를 하고 있습니다. 문제는 하이버네이트의 바인딩 쿼리를 봤을 때 날짜 형식 문자열이 'MM/dd/yyyy HH:mm:ss'로 표시가 되는 것을 확인했습니다. 이 문자열 형식은 timestamp 컬럼의 경우 정상적으로 동작을 하지만, date, datetime의 경우 처리가 되지 않는 문제가 있습니다. 원하는 형식 문자열은 'yyyy-MM-dd HH:mm:ss' 입니.. 2024. 12. 14.
Jenkins ssh publishing할 때, 대상 서버의 디스크가 부족하여 발생하는 에러 확인 및 개선하기 Jenkins SSH Error 트러블 슈팅젠킨스를 통해서 gradle 프로젝트를 빌드하고 대상 서버에 ssh 를 통해 publishing하여 기동을 하는 파이프라인이 있습니다. Jenkins 빌드 중에 예상치 못한 에러가 발생하였습니다. 다음은 젠킨스 빌드 로그 중 일부분입니다.  'Did not execute build step #1' 이라고 나오는데, 이 부분은 대상 서버 ssh를 접속과 관련이 있었습니다. Jenkins 프로젝트의 빌드 로그가 아닌 젠킨스가 설치된 서버에 접속해서 에러 로그를 직접 확인을 해보니 다음과 같은 로그를 확인할 수 있었습니다. WARNING j.p.p.BPCallablePublisher#invoke: Exception when publishing, exception me.. 2024. 12. 9.
[JdbcTemplate] batchUpdate 를 통해 bulk insert를 하는 방법 @GeneratedValue(strategy = GenerationType.IDENTITY) 으로 선언된 PK가 있다면 JPA에서는 Bulk Insert를 지원하지 않습니다. QueryDSL-JPA도 마찬가지인데요. 이럴 경우 MyBatis나 JdbcTemplate을 사용해야 하는데 둘 다 타입 안정성이 떨어지지만 JdbcTemplate이 컴파일 타임 시 타입 안정성을 더 높일 수 있다고 판단하여 JdbcTemplate으로 Bulk Insert를 구현하게 됐습니다.   JPA에서 Bulk Insert를 지원하지 않는 이유@GenerationValue(strategy = GenerationType.IDENTITY)로 @Id 컬럼을 선언하고 batch insert는 할 수 없습니다. 공식 문서에는 다음과 같.. 2024. 12. 7.
[QueryDSL] projection으로 테이블 조인 결과 데이터 매핑하기 MyBatis 코드를 QueryDSL로 이관하는 작업 중에 여러 개의 테이블의 조인되어 있는 결과를 반환하는 매핑 클래스를 만들어야 했습니다. QueryDSL의 경우 projection이라고 해서 SELECT 절의 조회 대상을 지정하는 방법이 있었습니다. projection 용 record 타입의 dto를 하나 만들어 결과를 매핑하여 처리를 하였는데요. 그 코드를 한 번 소개하려고 합니다.   ProjectionProjection은 프로그래밍 및 데이터베이스 분야에서 전체 데이터 중 일부만 선택해 가져오는 작업을 말합니다. 주로 QueryDSL, JPA, SQL 등에서 사용되며, 필요한 데이터만 선택적으로 추출하여 효율적인 데이터 전송 및 처리를 가능하게 합니다. Projection 사용 시 주의 사항 .. 2024. 12. 3.
반응형