недавно я пытался создать вызовы db в псевдо-AciveRecord-стиле в своем приложении для Android и предложил несколько методов класса, таких как User.all (Context dbContext), User.find (длинный идентификатор, Context dbContext) , User.delete (длинный идентификатор, контекст dbContext) и т. Д.
Под псевдо-AciveRecord я подразумеваю, что я не планирую делать это «настоящей библиотекой ActiveRecord» или чем-то в этом роде. Я просто хочу, чтобы в моем коде было легко понять вызовы БД, и стиль ActiveRecord - лучший для меня лично.
Пока все хорошо, и у меня нет проблем с этим кодом, например:
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 и т. Д.) Статическая переменная, где он будет хранить контекст приложения для каждого запроса БД? Это можно сделать во время обеда в приложении или до самого первого запроса.
Мое мышление исходит от iOS CoreData, где у вас есть довольно статический менеджер контекста для запросов, которые вы постоянно получаете из общего приложения.
Есть мысли, предложения, идеи?
Спасибо.