개요 이번 글에서는 계층형 재귀 쿼리를 사용해서 성능개선 및 프로젝트를 유지보수와 확장에 용이한 구조로 만들었던 과정에 대해 이야기해보려고 한다. 프로젝트 개요 현재 개인적으로 배달의 민족 모작 프로젝트를 진행하고 있는 중에 각 별점마다 해당하는 리뷰의 개수와 점수별로 별의 색을 칠하고 표시해주는 작업이 필요했다. 리팩토링 전 문제점 - 1 SELECT storeIdn, storeName, storeAddress, storePhonenum, storeIntro, minDelevery, deleveryTime, deleveryTip, (SELECT COUNT(*) FROM bm_review WHERE storeIdn = {storeIdn}) AS reviewCount, (SELECT COUNT(*) FRO..
개요 이번 글에서는 SpringBoot에서 환경에 따른 Properties 사용하는 방법(Spring Profiles)에 대하여 이야기해보려고 한다. Spring Profile이란? Spring은 실행 환경에 따라 애플리케이션의 설정을 다르게 해주는 프로파일이라는 기능을 제공하고 있다. 프로파일을 사용하면 런타임시에 활성화되는 프로파일에 따라 서로 다른 빈, 구성 클래스, 구성 속성 들이 적용 또는 무시될 수록 할 수 있다. 이를통해 DB 서버나 파일 업로드 경로 등을 실행 환경에 따라 다르게 해줄 수 있는 편리한 기능을 제공한다. SpringBoot에서 Spring Profile 사용하기 우선 SpringBoot에서 Spring Profile을 사용하기 위해서는 현재 프로젝트가 application.p..
개요 이번 글에서는 MSSQL에서 테이블에 윈도우 이모지 값이 삽입되었을 때 깨져보이는 것을 해결하는 방법에 대해 이야기해 보려고 한다. 환경 Microsoft SQL Server 2016 (SP1) 배경 사내 웹 운영툴을 Spring에 MySQL과 SQL Server을 같이 사용하여 운영하고 있는데 게임 사업실로부터 운영툴에서 게임 커뮤니티의 카테고리 이름에 윈도우 이모지를 넣어서 새로 등록하면 해당 이모지가 등록 시에 사라진다는 이슈를 전달받았다. 해당 카테고리 등록 API를 확인해 보니 SQL Server와 커넥션이 일어나는 API인 것을 확인하고 카테고리 테이블의 카테고리 이름 컬럼의 데이터 형식을 살펴보았다. 역시나 해당 컬럼의 데이터 형식은 varchar로 구성되어 있었다. 예를 들어 아래와 ..
개요 이번 글에서는 SpringBoot 프로젝트를 WAS 배포 후 @PathVariable을 사용하는 Controller에서 MethodArgumentTypeMismatchException이 발생하는 문제를 해결하는 방법에 대하여 이야기해보려고 한다. 문제상황 Controller @RequestMapping(value = "/memberList/orderType={orderType}&pageNum={pageNum}") public String list(@PathVariable("orderType") int orderType, @PathVariable("pageNum") int pageNum, Model model) { HashMap pageNationParam = pageNationUtil.setPage..