2014-01-19 3 views
-1

주석이 달린 메소드에 SQLiteDatabase를 전달해야하는 이유를 알고 있습니다. 그러나, 나의 경우에는 이것을 처리하는 좋은 방법을 보지 못합니다.AndroidAnnotations SQLiteTransactions 및 SQLiteDatabase 전달

저는 관리자 클래스를 사용하여 테이블에서 CRUD를 추상화하려고합니다. 이 클래스는 SQLiteHelper 인스턴스를 소유하며 읽기/쓰기 가능한 데이터베이스를 인스턴스화합니다. 내가 주석을 사용하는 경우이 내가 관리자 클래스 외부를 인스턴스화 중 하나가 있다는 것을 의미, 또는이 같은 다른 방법을 노출해야합니다 :

Device add(Device device) { 
    return add(sqliteHelper.getWritableDatabase(), device); 
} 

@Transactional 
Device add(SQLiteDatabase db, Device device) { 
    // ... 
    return device; 
} 

어떻게 사람이 사용하거나 가장 좋은 방법은 무엇합니까를?

+0

데이터베이스에 액세스해야 할 때 sqlliteopenhelper를 실행하면 컨텍스트 만 필요한 것입니다. – danny117

답변

0

@Transactional을 사용하면 신택스 설탕처럼 보일뿐 아니라 추가 방법 없이도 동일한 효과를 얻으려면 try/last를 직접 추가 할 수 없습니다. http://code.google.com/p/androidannotations/wiki/SQLiteTransactions

주석이 작동한다고 가정 할 때이 방법을 공개로 노출해야합니까?

+0

아이디어는 트랜잭션을 만드는 데 필요한 코드를 반복하지 않아도된다는 것입니다. 그러나 AndroidAnnotations의 경우 이는 SQLiteDatabase를 인수로 제공해야 함을 의미합니다. 데이터베이스의 인스턴스를 생성하는 좋은 예를 찾을 수 없습니다. 이상적으로 나는 이것을 UI 클래스 안에서하고 싶지 않습니다. – ndsc

+0

디자인을 재평가해야 할 수도 있습니다. 이 SQL 작업을 의도 된 서비스 또는 다른 것으로 푸시 다운해야한다. 나는 데이터베이스 영속성을 위해 ContentProvider를 독점적으로 사용한다. –