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

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

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

благодаря
Камень

Solutions Collecting From Web of "Создание класса модели данных для обработки базы данных"

То, что вы называете «модельным классом», более широко известно как объект доступа к данным (DAO). Ваша модель обычно представляет собой набор классов, в которых хранятся ваши данные и бизнес-логика. В вашем случае, вероятно, класс Student имеющий свойства ID, имя, GPA и т. Д. Если вы хотите разделить доступ к данным с вашей моделью, у вас будет доступ к вашему классу доступа к данным ( DatabaseHelper ) к базе данных и использовать данные, которые он получает для возврата объектов Student или List<Student> . В деле разделения класса доступа к данным из помощника базы данных очень мало смысла, лучше всего использовать весь код, связанный с базой данных, в одном месте.

Однако использование классов моделей (только) может быть не всегда практичным на Android, поскольку оно имеет встроенную поддержку для получения и отображения данных из курсора ( CursorAdapter и т. Д.). Если вы хотите использовать любой из них, вам придется подвергать свои данные не объектам модели, а как Cursor . Что касается контент-провайдеров, посмотрите на них тоже, но если вам не нужно подвергать свои данные другим приложениям, написание ContentProvider может быть излишним.

С другой стороны, вы не хотите открывать и закрывать базу данных по каждому запросу. На самом деле безопасно оставлять его открытым, он автоматически закрывается, когда процесс вашего приложения умирает.

Я делаю это в своем приложении, и он отлично работает, код чист, и он вообще не влияет на производительность, особенно с аппаратными телефонами. Я пробовал все другие подходы и даже использовал контент-провайдера, но, по моему мнению, это было по-разному.

Собственное моделирование данных на основе android является контент-провайдерами. Ссылка

Это своего рода абстрактный тип источника данных.

Я делал это аналогичным образом. Но опять же его также субъективным.