Я только начинал работать с приложением базы данных, когда понял, что должен реализовать шаблон MVC
, поскольку приложение довольно сложное и включает в себя ряд операций с базой данных.
В связи с этим я решил создать отдельную model class
для обработки операций с базой данных. Этот класс будет иметь все методы, которые будут возвращать мне данные после выполнения команды Sqlite (например, Select) ИЛИ просто выполнит команду SQLite (например, Delete). Но я хочу отделить этот класс от Database Adapter
класса, где я открываю, создаю и закрываю свою базу данных.
Позвольте мне изложить мою концепцию в коде:
public class DataModel
{
/*
Private members
*/
// Method to Select data from Student table
public ArrayList<String> FetchStudents (parameter 1)
{
private ArrayList<String> arrStudent;
DatabaseAdapter objDB= new DatabaseAdapter();
objDB.open();
/*
Some code
*/
objDB.close();
return arrStudent
}
//Method to delete record from Student table
public DeleteStudent(parameter 1)
{
DatabaseAdapter objDB= new DatabaseAdapter();
objDB.open();
//Some code
objDB.close();
}
/*
Rest of methods
*/
}
// DatabaseAdapterClass
private static class DatabaseHelper extends SQLiteOpenHelper {
DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
/**
* onCreate method is called for the 1st time when database doesn't exists.
*/
@Override
public void onCreate(SQLiteDatabase db) {
Log.i(TAG, "Creating DataBase: " + CREATE_STUDENT_TABLE);
db.execSQL(CREATE_STUDENT_TABLE);
}
/**
* onUpgrade method is called when database version changes.
*/
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.w(TAG, "Upgrading database from version " + oldVersion + " to "
+ newVersion);
}
}
Вопрос
Что я хочу спросить, это правильный подход к реализации? Хорошо ли создавать отдельный класс для методов базы данных ? Какие ограничения или проблемы, вы думаете, ребята, могут беспокоить меня позже? Кроме того, есть ли лучший способ реализовать вышеуказанную концепцию?
Спасибо
Камень