Недавно я пытался создать псевдо-AciveRecord-стиле db-вызовы в моем приложении для Android и разработал кучу методов класса, таких как User.all (Context dbContext), User.find (long id , Context dbContext), User.delete (long id, Context dbContext) и т. Д. Псевдо-AciveRecord Я имею в виду, что я не планирую делать это «реальной библиотекой ActiveRecord» или что-то в этом роде. Я просто хочу иметь простые для понимания вызовы db в моем коде, а стиль ActiveRecord - лучший для меня лично. До сих пор так хорошо, и у меня нет никаких проблем, имеющих этот код, например:static getApplicationContext для SQLiteOpenHelper
public static Cursor allAsCursor(Context dbContext) {
DBHelper dBHelper = new DBHelper(dbContext);
SQLiteDatabase database = dBHelper.getReadableDatabase();
Cursor dbQueryResult = database.query(DBHelper.TABLE_NAME_USERS, null, null, null, null, null, "_id DESC");
dbQueryResult.getCount();
database.close();
dBHelper.close();
dbContext = null;
return dbQueryResult;
}
Но дело в том, что беспокоит меня то, что я прохожу контекст деятельности или что-то вроде этого все время, когда я делаю вызов и мне было интересно, было бы неплохо просто дать моему классу User (который имеет User.find, User.all и т. д.) статическую переменную, в которой он будет хранить контекст приложения для каждого запроса db? Это можно сделать на обед в аптеке или до самого первого запроса запроса.
Мое мышление происходит от iOS CoreData, где у вас довольно статический менеджер контекста для запросов, которые вы получаете все время от общего приложения.
Любые мысли, предложения, идеи?
Спасибо.
Если вы имеете в виду пользовательский класс dao, то мне кажется, что вы уже передаете контекст приложения в свой класс-помощник db, и в свою очередь вы используете ссылку db, предоставляемую db-помощником для вашего класса dao пользователя. Другими словами, контекст передается в db helper, который возвращает db, используемый пользователем dao. Это мое понимание. –
да, и он хорошо работает, у меня есть 0 проблем с исключением, что это довольно утомительно проходит контекст все время. Вот почему я спрашиваю, является ли хорошей идеей или практикой просто сохранять одну статическую ссылку на контекст для каждого запроса –