유저 권한에 따라 모든 쿼리에 조회조건이 추가되야 하는 경우가 생겼다.예를 들면 '본인 소속 데이터만 조회해야 하는 권한자 일 경우' 매 쿼리마다 유저권한을 체크해서유저 부서와 쿼리 데이터를 비교하는 조건절을 추가해야 하는 상황이 생겼다. 제네릭하게 구현해보려다가PathBuilder 를 사용해서 모든 엔티티를 비교하는 메소드를 작성하였다. PathBuilder 란? QueryDSL 에서 제공하는 유연한 클래스이며,엔티티의 QClass를 직접 사용하는 대신, 동적으로 엔티티의 속성에 접근할 수 있는 클래스이다.동적으로 생성된 엔티티나 필드를 다룰때 유용하다. PathBuilder 의 특징이라면QClass 없이 엔티티에 접근가능하고제네릭 메소드와 함께 사용하여 런타임 오류를 방지하고특정 엔티티..
IB Sheet8 그리드 제품을 신규 프로젝트에도 사용하기로 되었는데 기존 프로젝트에는 공통 CRUD 컨트롤러/서비스에서 IB Sheet의 데이터 Map 방식을 가공하여 mybatis 쿼리 xml에 맵핑하는 방식으로 되어있었다. 기능을 빠르게 만들어 내기에는 아주 편안한? 그러나 유지보수하기에는 찾기 아주 불편한? 편안한 이유는 기능마다의 컨트롤러/서비스/DTO를 구성할 필요가 없으며, mybatis xml 쿼리만 생성하면 되었기 때문에 java 코드를 작성할 필요가 없었음. 전형적인 대한민국 si 프로젝트 방식으로 구성 되어있었음. 신규프로젝트에는 JPA를 적용하기로 했고, 그러다 보니 기존 공통 CRUD를 그대로 가져다 쓸 수 없었음. (제네릭방식으로 잘 구성하면 다시 재활용 가능하나, 난 유지보수가..