
통계 집계한 데이터를 조회하여 table 에 그려주는 과정에서중간중간마다 데이터 백분율을 작성해 주고 싶었다. thymeleaf each 를 사용해서 조회한 데이터를 아래와 같이 그렸다. 구분1월2월3월4월5월6월7월8월9월10월11월12월합계접수 예약 실제로는 구분 앞에 대분류, 중분류가 더 있어서 위와 같은 형태가 여러개 그려지게 되는데접수/예약/(예약율)/접수/예약/(예약율)/... 이렇게 중분류가 바뀌는 시점에 예약율 행을 추가해주고 싶었다. 처음엔 서비스단에서 데이터 가공을 해서 위코드 그대로 쓸까 했으나thymeleaf 에서 해결 할 수 있지 않을까 싶어서 타임리프 유틸들을 조합해서 해결해 보았다. 접..

프로젝트의 결과물이 거의 나옴에 따라 운영서버에 배포해서 이것저것 보는 중에 이상하게 리소스파일들 (js, font, css ) 을 계속 로드해오는 것을 확인했다. 분명 로컬에서는 느끼지 못했던 현저한 속도저하를 느꼈다. 우씨 로컬에서도 느꼈으면 해결하고 배포했을 텐데... 뭐지 싶어 리소스들 response header 를 봤더니 cache-control이 죄다 no-store 로 되어있는 것이 아닌가... no-store 는 캐싱을 하지 않겠다 이기 때문에 매번 리소스를 로드하게 된다. 리소스 캐시컨트롤 설정은 여러방법이 있는데 나는 간단한 것을 좋아하여 application.yml 에 리소스 캐시 설정을 추가했다. spring: web: resources: cache: cachecontrol: no..

SpringBoot 에 h2 를 연결해서 JPA를 사용하는 기초 방법을 작성해본다. 사내에는 보통 구축된 DB가 있기 때문에 DB가 정해지지 않은 테스트 시 빼고는 잘 사용할 일이 없었는데 스터디하다가 연결하게 되어 남겨본다. 프로젝트 생성 IntelliJ 2023.3.4 를 사용하니까 이제 spring 프로젝트가 3버전으로 생성되어 jdk8 버전 프로젝트를 자동 생성할 수 없는 것 같다. 바꾸고 싶다면 상위버전으로 생성뒤에 다운그레이드 해야 할 듯 싶다? 다음으로 넘어가서 디펜던시를 추가하자 간단하게 필요한 녀석들만 추가해주고 프로젝트를 생성하자 아래와 같이 build.gradle 이 생성될 것이다. plugins { id 'java' id 'org.springframework.boot' version..

Oracle java jdk 계정 맨날 까먹어서 받기도 귀찮을 뿐더러 open-jdk 가 잘 활성화 된 탓에 굳이 오라클 jdk 를 설치 안해도 되는 상황이기에 open-jdk 를 버전과 OS 환경에 알맞춰 아주 쉽게 다운로드 받는 사이트를 다 아시겠지만 추천드린다. Deploy Open Source Backed by Enterprise Services | OpenLogic OpenLogic enabled us to avoid downtime, reduce organizational costs, maintain security compliance, and facilitate an overall source risk strategy. www.openlogic.com 위 오픈로직닷컴 사이트에 들어가셔서 Do..

엔티티의 LocalDateTime 날짜형식 데이터를 년월(YYYY-MM) 로만 비교해줘야 하는 상황이 생겼다. 그 동안은 String 형식으로 넘어온 날짜데이터를 비교할 때, AttributeConverter 를 사용해서 mapstruct 에서나 querydsl 에서 사용해왔었다. [Mapstruct] LocalDateTime To String Converter, 엔티티와 DTO간 타입이 다를때 맵핑하기 (feat.AttributeConverter) 보통 날짜값을 사용할 때 db와 뷰와의 관계에서 컨버팅을 자주 하게 된다. DB에는 예쁘게 들어가있지만 사용자 화면에 그대로 뿌리면 보통 우리가 보던 포맷이 아니기 때문에 매우 별로다. 그래 jong-bae.tistory.com 그 동안 비교값을 LocalD..

Mapstruct 를 활용하면 Entity ↔ DTO 간 필드들을 쉽게 맵핑하여 사용할 수 있습니다. 필드가 많아지면 일일이 손수 맵핑하는게 여간 귀찮은 일이 아니며, 생각없이 맵핑하다가 타이핑 실수로 맵핑이 안되는 경우가 발생 할 수 있기 때문에 Mapstruct 를 잘 활용하는 것이 좋습니다. 이번 포스트에서는 mapstruct 로 간단히 entity 와 DTO 간 필드를 맵핑하는 법과 @Mapping 어노테이션을 활용하여 필드 데이터를 조작 맵핑하는 방법을 다뤄보려고 합니다. 더 고급 기술들이 있지만 저도 아직 실 사용하지 않는터라 다 다루지는 않겠습니다. Mapstruct 를 사용하기 위해서는 아래의 dependency 를 추가해줍니다. implementation 'org.mapstruct:map..