XCursor ? 편리한 안드로이드용 DTO 변환 라이브러리 ^^

안드로이드 DB를 사용하다 보면 몇가지 불편한게 있다.

바로 DB에 Insert 와 Update 그리고 Select 할때

값을 가져올때 쌩 노가다를 하는 것이다. 

뭐 아시는 분은 다 아시겠지만 한가지 예를 들어 보겠다.

SQLite 에 값을 넣기 위해서는 다음과 같은 작업을 한다.

 

이부분의 구글의 NotePad 샘플중에 발췌한 부분이다.

(http://developer.android.com/resources/samples/NotePad/src/com/example/android/notepad/NoteEditor.html)

보시는 바와 같이 DB에 입력할 데이터를 put을 이용해 하나씩 대입을 하고 있다.

다행이 저 예제는 입력할 데이터가 몇개 없어서 그렇게 생노가다라고 생각이 들지 않는다.

하지만 개발하다보면 많은 데이터를 입력을 받는 경우가 대부분이라고 생각이 든다.

기본 개인정보만 받는다 해도

이름,닉네임,나이,생일,주소,우편번호 등등의 여러가지가 있다.

그럴때마다 저렇게 일일이 대입한다는건 정말 노가다가 될수밖에 없다.

그래서 조금 생각해 보았다.

자바 개발자 대부분은 DTO를 잘 활용 할 것 이라고 생각한다.

나 또한 안드로이드 개발시 DTO를 대부분 활용한다. DTO의 활용은 정말 편리하다.

데이터를 세팅해두고 꺼내쓸때 이보다 더 편리하지 않을수가 없다.

그래서 필자가 개발시 DB 입력과 데이터를 가져올때 DTO를 세팅하고 가져다 썻다.

하지만 일일이 대입해야 하는건 어쩔수가 없었다.

그래서 좀더 편리해 보고자 XCursor를 만들게 되었다.

뭐 이름만 거창하다. 하는 역활은 정말 소소하다.(어쩌면 이름을 바꿔야 할지도 모르겠다.)

DB에 Insert할때

DTO 클래스를 ContentValues 로 컨버팅하고

DB에서 Select 할때

Cursor 인터페이스를 DTO로 자동 컨버팅 해주는 역할밖에 하지 않는다.

다음은 사용방법및 예제이다.

DTO를 하나 만든다.(단 변수명은 DB칼럼과 정확히 일치해야 한다.)

WordDto.java

 

 

위의 DTO를 보게 되면 생소한 annotation 이 보인다.

사용할때 2가지의 annotation 을 사용할수가 있다. (단 변수에서만 사용한다.)

@NotDBColumn ( DB칼럼이 아닌경우 세팅한다. )

해당 변수는 ContentValues 컨버팅 할 경우 무시된다.

@PrimaryKey ( DB칼럼중 Key값일 경우 세팅한다. )

해당 변수에 값이 비어 있으면  ContentValues 컨버팅 할 경우 무시되며

값이 있으면  ContentValues에 추가된다.

다음으로는 실제 Insert와 Update를 하는 예제이다.

좀더 쉽지 아니한가~? 나만 그런가? 나만 쓰레기 인가?

다음으로 넘어가 보자 이젠 데이터를 넣었으니 데이터를 가져와야 겠다.

참 쉽죠잉~ 

CommListDto 이놈은 ArrayList로 관리하기 귀찮아 공용 DTO를 세팅한것이다.

xcursor.jar 를 첨부해두었다.

필요하신분은 다운받아 이클립스에 사용자 라이브러리 추가하고 바로 사용하면 된다.

사용자 라이브러리 추가방법은 아래 링크를 참고 하기 바란다.

http://www.androidpub.com/4543

버그가 있다면 글남겨 주시면 감사하겠습니다.^^

]]>

도큐멘트, 미분류 에 올린 글

댓글 남기기