Создание класса модели данных для обработки базы данных

Я только начинал работать над приложением базы данных, когда понял, что должен реализовать шаблон MVC , поскольку приложение довольно сложное и включает в себя ряд операций с базой данных.
В связи с этим я решил создать отдельный класс модели для обработки операций с базой данных. Этот класс будет иметь все методы, которые будут возвращать мне данные после выполнения команды 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);
}
}  

Вопрос :
Я хочу спросить, правильный ли это подход к реализации? Можно ли создать отдельный класс для методов базы данных ? Какие ограничения или проблемы, по вашему мнению, могут побеспокоить меня позже? Кроме того, есть ли лучший способ реализовать вышеуказанную концепцию?

Спасибо
Камень

8
задан 3 August 2011 в 05:40
поделиться