sitelink1 | |
---|---|
sitelink2 | |
sitelink3 | |
sitelink4 | |
sitelink5 | |
sitelink6 |
검색과 정렬시에는 쿼리문에서 WHERE 문과 ORDER BY 문을 생성하게 되는데 이때 자바 로직에서는 if~else를 남발하게 마련이다.
복잡한 if~else문은 비즈니스 레이어에서든 퍼시스턴트 레이어에서든 코드의 가독성을 떨어뜨릴 수 밖에 없으며,
각 코더들마다 자기만의 코딩 스타일로 작업할 수 밖에 없다.
이렇게 검색과 정렬문의 생성에 필요한 로직을 따로 분리해냄으로써 주 비즈니스 로직의 가독성을 높여줄 수 있을것이라고 판단했다.
생성한 패키지는 com.omnibuscode.com.util.board.condition 이며 관련 클래스는 다음과 같다.
1. SearchInfo.java
2. SearchInfoEmpty.java
3. SortInfo.java
4. SortInfoEmpty.java
2. SearchInfoEmpty.java
3. SortInfo.java
4. SortInfoEmpty.java

위 다이어그램에 나타나있는 SearchInfoEmpty.java클래스는 임의로 생성한 클래스이며 팩토리클래스에서 기본값 셋팅용으로 사용하고 있다.
기본적으로 변수생성시 기본값으로 지정해놓으면 검색문 생성 로직을 사용하면서 어딘가에서 발생하게 될 NullPointerexception을 방지할 수 있다.
SearchInfo 서브클래스는 다음의 SearchInfoForMysql 클래스를 참조하면 된다.
위와 같이 SearchInfo클래스에서 미리 정의한 몇가지 메서드들을 사용하여 서브클래스의 setSearchCondition() 메서드를 작성하게 된다. (Template Pattern)
그리고 이렇게 생성한 클래스들은 다음과 같은 코드로 사용할 수 있다.
- new SearchInfoForMysql(req).getSearchCondition();
최종적으로 리턴되는 객체는 WHERE문 이하의 조건을 나타내는 스트링객체이다.