유저 권한에 따라 모든 쿼리에 조회조건이 추가되야 하는 경우가 생겼다.예를 들면 '본인 소속 데이터만 조회해야 하는 권한자 일 경우' 매 쿼리마다 유저권한을 체크해서유저 부서와 쿼리 데이터를 비교하는 조건절을 추가해야 하는 상황이 생겼다. 제네릭하게 구현해보려다가PathBuilder 를 사용해서 모든 엔티티를 비교하는 메소드를 작성하였다. PathBuilder 란? QueryDSL 에서 제공하는 유연한 클래스이며,엔티티의 QClass를 직접 사용하는 대신, 동적으로 엔티티의 속성에 접근할 수 있는 클래스이다.동적으로 생성된 엔티티나 필드를 다룰때 유용하다. PathBuilder 의 특징이라면QClass 없이 엔티티에 접근가능하고제네릭 메소드와 함께 사용하여 런타임 오류를 방지하고특정 엔티티..
이번에 poi 라이브러리 버전으로 이슈를 겪어 남겨본다. 내부에 ibSheet8 이라는 그리드를 사용하는데해당기능에서 엑셀다운로드 기능이 포함되어 있어 사용하게 되었다. ibsheet 측 개발문서에 보면poi 3.13 버전과 poi4.1.2 버전에 대해 구분을 지어놓았다. 당연히 나는 poi 3 버전은 보안취약점이 존재하는 버전이라자연스럽게 4.1.2 를 채택하여 디펜던시를 추가하였다.(애초에 인텔리제이에서도 4.1.1 이상으로 업데이트 하라고 표기됨...) 인텔리제이에서 개발하고 테스트할때 까지는 문제가 없었다. 동작을 아주 잘 했기 때문.허나 운영에 배포하자 엑셀 스타일이 적용이 안되는 것을 확인하였다. 처음엔 엑셀 요청자체가 Response 200 으로 응답되서 오류가 없는줄 알았느나로그열..
게시글을 올리고 삭제했을때,데이터를 완전 삭제해버리는 Hard Delete 방식과데이터를 남기는 Soft Delete 방식이 존재한다. 어떻게 운영하냐에 따라서 각각의 방식을 사용할 수 있다. 사내 백오피스를 리뉴얼하면서 레거시를 보니어떤 메뉴는 Hard 방식 어떤메뉴는 Soft 방식을 혼용하고 있었다. 그래서 동일하게 가져가기 위해 모든 메뉴의 삭제기능을 soft 방식으로 가져가려고 한다. JPA 엔티티에 @SQLDelete 어노테이션을 사용하여Delete 명령시 Update로 삭제유무 컬럼을 조정하게 해줄 수 있다. 적용한 엔티티는 아래와 같다.@Entity@Table(name="sample")@SQLDelete(sql = "UPDATE sample SET DELETE_YN = '..