Seize the day

POST : Android Dev Study

OrmUtils를 폐기하다. SettingsDao 재작성

오래간만에 블로그를 쓴다. 

9월달 회사에서 사이즈가 큰 과제를 했기에 블로그에 뭔가를 쓸 여력이 없었다. 그럼에도 간간히 책도 5권 정도 읽었고11월 말 부터는 앱을 개발하기위해서 상당히 많은 코드를 새롭게 작성을 했다. 


예전에 Database를 쉽게 사용하기 위해서 Orm 모듈을 자체 구현하였다. OrmObejct를 이용하여 Table을 정의하면 OrmHelper, OrmUtils를 이용해서 데이타베이스 관련 코드를 중복으로 작성하지 않아도 쉽게 구현할 수 있었으나, 실제 적용을 하다보니 잘 맞지 않는다는 느낌이다. 가장 큰 이유는 예전에 작성해 놓은 Activity페이지를 동일하게 Orm을 이용하여 구현을 했는데 작성된 소스코드의 라인 수가 거의 줄지를 않았다.  30~40% 이상 코드작성의 번거로움이 줄어들기를 기대했는데 그렇지 않았고, OrmUtils를 통해서 전달되니 실제 구현의 내부는 더 복잡하게만 느껴진다. 그래서 고민끝에 Column, ColumnBuilder, Table, TableBuilder, BaseDto, BaseDao, ModuleManager 라는 여러 클래스를 새로 작성해서 Annotation 처리를 없애고 더 간단하고 명확하게 구현을 했다. 원하는 코딩라인수도 더 줄일수 있었다. OrmUtils를 구현하면서 annotation을 심도있게 공부하게 된 것은 좋은 공부가 되었다. 




대부분의 구현은 BaseDao의 구현을 따른다.


예전에 작성해 놓은 Settings관련 코드도 결국 버리고 새로 작성했다. enum에 세팅관련 정의를 추가하다보니, base 모듈외에서는 새로운 setting새로 정의할 방법이 없는 문제가 있었고, SettingsDao.getInt 처럼 SettingsDao의 사용법을 알고 있어야 하기에 번거롭고, String 세팅인데 getInt 메쏘드를 호출할 수도 있기에 혼란을 줄이고 보다 간단하고 효율적인 방법으로 구현했다, 

class abstract class CommonSettings {

    public static final SettingString var1 = new SettingString("key", "default");

}

사용할 때는 이렇게 

CommonSettings.var1.getValue();

CommonSettings.var1.setValue("value1");





보다 간단해 졌다. 아무데서나 정의할 수도 있고, dao 를 몰라도 바로 사용할 수 있다. 


Dao클래스는 Singleton이어야 하기 때문에 ModuleManager를 간단히 구현했다. 



top

posted at

2015. 12. 19. 14:09


CONTENTS

Seize the day
BLOG main image
김대정의 앱 개발 노트와 사는 이야기
RSS 2.0Tattertools
공지
아카이브
최근 글 최근 댓글
카테고리 태그 구름사이트 링크