Search

Apple에서 SqlLite 예제로 공개한 iPhone용 소스를 보면 Model 클래스에서 Data Access까지 처리하도록 되어 있습니다. 각각 장단점이 있어서 어느 쪽이 더 낫다는 판단을 내리기는 힘들지만, 최근 JAVA 웹개발 MVC 패턴 중에서 POJO와 DAO를 분리하여 아키텍처 관점에서 단순화하는 형태가 주목받고 있습니다.

각각 자기 맡은 바만 충실히 하고 각 연결고리를 최대한 느슨하게 한다는 것이 주 목적이라 생각합니다. POJO로 모델을 구현함에 있어서 데이터 처리는 DAO가 맡고 그 DAO도 경우에 따라서는 다른 DAO로 교체할 수 있도록 하여 결합도를 떨어뜨리는 효과를 내게 됩니다.

아직 테스트 단계이지만, iPhone 개발에서도 Apple에서 제공한 예제에 따르지 않고 Pure Object와 DAO를 분리하여 처리하는 방법도 타당성이 있지 않을까 생각해봅니다. 메모리 관리 측면에서도 올바른 방법이라 생각합니다.

해당 업무 영역별 데이터를 처리하는 DAO 클래스를 둡니다.
예를 들어, 주소록을 관리한다고 했을 때 주소 등록, 변경, 삭제, 목록, 상세와 같이 CRUD의 외부 인터페이스를 먼저 구현합니다.
즉, insertAddr, updateAddr, deleteAddr, listAddr, viewAddr 등의 외부 인터페이스를 구현합니다.
파라미터로 데이터 전달을 위한 객체를 하나 생성합니다. 즉, Addr이라는 클래스를 만들겠습니다.
Addr 클래스는 name, address, email, phone, mobile이라는 일반 속성을 갖고 데이터 관리를 위한 키 속성인 uid를 갖는 것으로 하겠습니다. 이 클래스는 위의 필드를 외부에서 사용할 수 있도록 하기 위해 getter, setter를 구현해야 합니다.

Addr 클래스는 결국 insertAddr, updateAddr에는 파라미터로 사용이 되고,
listAddr, viewAddr에는 반환 객체 또는 Array에 포함된 객체가 됩니다.
물론 deleteAddr에는 키속성만 있으면 되므로 Addr 클래스는 사용되지 않을 것입니다.

결국, Addr은 View Layer 또는 DAO Layer에서 사용하기 위한 임시 보관함 정도에 지나지 않습니다.
비교적 단순하고 가볍게 구현해야하며 가급적 비즈니스 로직은 배제하는 것이 좋겠습니다.

저작자 표시 비영리 변경 금지