본문 바로가기

Java9

@NamedNativeQuery 결과 POJO에 매핑 @NamedNativeQuery 결과 POJO에 매핑 JPQL에 사용할수 없는 기능들이 있는데 그 중 하나가 UNION 기능이다. 이를 보완하기 위해 @NamedNatvieQuery를 이용해 Natvie 쿼리를 사용할 수 있게 지원한다. 예제 먼저 사용된 예제를 살펴보자. 추출 목적은 STUDENT 테이블과 TEACHER 테이블의 데이터를 한번에 보여주고 싶다. @Data @NamedNativeQuery( name = "Person.methodNameInRepository", query = "SELECT s.id, s.name, s.phone, s.address FROM STUDENT s WHERE s.class_number = (?1) " + "UNION " + "SELECT t.id, t.name, .. 2018. 1. 15.
Log4j2 - 설정 Log4j2 설정 개요 로컬에서 작업할 경우 로그 메세지를 console로 출력하며 메세지들을 장기적으로 관리할필요가 없지만 라이브 환경에서는 다르다. 일반적으로는 별도의 파일로 저장시키며 특별한 경우는 외부 서비스나 별도의 저장소에 저장하기도 한다. 여기서는 톰캣을 이용해 서비스를 하는 웹앱 환경에서 로그 파일들을 일정 기간동안 유지하는 설정을 설명한다. 설정 상세 의존성 의존성 관리는 maven을 사용했다. log4j2를 직접 사용하기 보단 로그 파사드인 slf4j를 이용한다. 그리고 설정 파일은 YAML 포맷을 사용한다. 2.9.0 2.9.0 1.7.25 2.9.0 com.fasterxml.jackson.core jackson-databind ${jackson.version} com.fasterxm.. 2017. 12. 9.
Log4j2 - 개요 Log4j 2 얼마 전까지 logback을 사용하고 있었는데, logback 대신 log4j를 사용해야 되는 상황이 됐다. 꽤 오래전에 중단됐었던 log4j의 개발이 얼마 전이라고하긴 뭐하지만 대략 4년 전부터 log4j2라는 이름으로 활발하게 릴리즈가 진행되고 있고 현재는 2.9.1 버전까지 릴리즈된 상태이다. 기존에 log4j에서 부족했던 기능들 및 성능이 대폭 개선돼었고 일부 기능은 logback보다 높은 성능을 보여주는 벤치마크 자료도 제공되고 있다. 이런 이유로 log4j2를 사용하게 됐고 적용 과정에서 얻은 정보들을 공유해보려고 한다.Log4j2 직접 사용할순 있지만 일반적으로는 SLF4J와 함께 사용하기 때문에 아래 내용중에 일부는 실제 개발 환경에서 적용되지 않는 내용들도 있다(예를들면 메.. 2017. 10. 18.
[Spring] @Temporal annotation의 시간 업데이트 문제 특정 데이터의 수정 날짜를 기록하기 위해 아래와 같은 속성으로 관리하고 있었다. @Column(name = "MOD_DATE") @Temporal(TemporalType.DATE)private Date modDate; 이 수정 날짜를 기준으로 동작하는 코드가 있는데, 로직이 이상하게 돌아 확인해보니 modeDate의 속성을 변경해도 DB에 저장되지 않았다. 정확한 증상은 Hibernate를 이용해 해당 Entity를 읽어온 후 시간을 약 30분가량 늦춘 후 저장을 해도 변경사항이 DB에 저장되는 않는것. 관련 내용을 구글링해 보니 비슷한 경우를 겪은 개발자가 있었는데, 관련된 답변을 보니 TemporalType에 따라 데이터 처리 방식이 다른것 같다. 위에 코드에서 사용하고 있던 Temporal.DATE.. 2017. 3. 18.