[android] 안드로이드 SQLite 데이터베이스와 Dagger2
소개
안드로이드 앱을 개발할 때 데이터를 지속적으로 저장하고 관리해야 할 때가 있습니다. 이때 SQLite 데이터베이스는 경량 및 내장형 데이터베이스 시스템으로 많이 사용됩니다. 이 기술 블로그에서는 안드로이드 앱에서 SQLite 데이터베이스를 사용하는 방법과 Dagger2를 이용한 의존성 주입에 대해 다루겠습니다.
SQLite 데이터베이스 사용하기
데이터베이스 생성하기
SQLiteHelper 클래스를 만들어 데이터베이스를 생성하고 테이블을 정의할 수 있습니다.
public class MySQLiteHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "MyDatabase";
private static final int DATABASE_VERSION = 1;
// 테이블 생성 SQL문
private static final String CREATE_TABLE_MYTABLE = "create table mytable " +
"(id integer primary key autoincrement, name text not null);";
public MySQLiteHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase database) {
database.execSQL(CREATE_TABLE_MYTABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS mytable");
onCreate(db);
}
}
데이터 조작하기
데이터베이스에 접근하여 데이터를 삽입, 조회, 수정, 삭제하는 코드를 작성합니다.
public class MyDAO {
private SQLiteDatabase database;
private MySQLiteHelper dbHelper;
public MyDAO(Context context) {
dbHelper = new MySQLiteHelper(context);
}
public void open() {
database = dbHelper.getWritableDatabase();
}
public void close() {
dbHelper.close();
}
public void insertData(String name) {
ContentValues values = new ContentValues();
values.put("name", name);
database.insert("mytable", null, values);
}
// 나머지 메서드들도 구현
}
Dagger2를 이용한 의존성 주입
의존성 주입은 안드로이드 앱에서 객체 간의 의존 관계를 줄이고 모듈화하는 데 도움이 됩니다. Dagger2는 이를 위한 강력한 도구로, 컴파일 시점에서 의존성 그래프를 분석하여 의존성을 주입합니다. 아래는 Dagger2를 사용한 예시입니다.
모듈 정의하기
의존성 주입에 필요한 모듈을 정의합니다.
@Module
public class MyModule {
@Provides
public MyDAO provideMyDAO(Context context) {
return new MyDAO(context);
}
// 다른 의존성을 제공할 메서드들도 정의
}
컴포넌트 정의하기
의존성 주입을 수행할 컴포넌트를 정의합니다.
@Component(modules = MyModule.class)
public interface MyComponent {
void inject(MyActivity activity);
}
주입하기
의존성 주입을 받을 대상에서 컴포넌트를 통해 의존성을 주입합니다.
public class MyActivity extends AppCompatActivity {
@Inject
MyDAO myDAO;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MyComponent myComponent = DaggerMyComponent.builder()
.myModule(new MyModule(this))
.build();
myComponent.inject(this);
// 주입된 myDAO를 사용
}
}
의존성 주입을 위해 Dagger2를 사용하면 코드의 가독성과 유지보수성이 향상되고, 유연한 앱 아키텍처를 구축할 수 있습니다.
마무리
이번 글에서는 안드로이드 앱에서 SQLite 데이터베이스를 사용하고, Dagger2를 이용한 의존성 주입에 대해 알아보았습니다. 안드로이드 앱을 개발하면서 데이터 관리와 의존성 주입을 고려할 때, 이러한 기술들을 적절히 활용하여 더 나은 앱을 만들 수 있을 것입니다.
참고문헌:
감사합니다!