Логика взаимодействия с базой данных


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

Поэтому я решил использовать один экземпляр базы данных. Теперь у меня нет проблем, но, это правильно?

Класса приложения

public class ApplicationClass extends Application
{
    private DatabaseAdapter PrDatabaseAdapter; 

    public DatabaseAdapter getDatabaseAdapter()
    {
        return PrDatabaseAdapter;
    }

    @Override
    public void onCreate()
    {
        super.onCreate();

        PrDatabaseAdapter = new DatabaseAdapter(this);
        PrDatabaseAdapter.open();
    }
}

Класс Адаптера База данных адаптера просто сидит на вершине DatabaseManager (мой SQLiteOpenHelper)

private Context context;
private SQLiteDatabase db;
private DatabaseManager dbManager;

/**
 * The DatabaseAdapter contains all interaction logic for the database
 * @param context
 */
public DatabaseAdapter(Context context)
{
    this.context = context;
}

/**
 * Opens writable database
 * @return DatabaseAdapter;
 * @throws SQLiteException
 */
public DatabaseAdapter open() throws SQLiteException
{
    dbManager = new DatabaseManager(context);
    db = dbManager.getWritableDatabase();
    return this;
}

/**
 * Closes database connection
 */
public void close()
{
    dbManager.close();
}

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



529
6
задан 12 декабря 2011 в 11:12 Источник Поделиться
Комментарии
1 ответ

Я не знаком с Android, так что только некоторые универсальные Ява Примечания:


  1. PrDatabaseAdapter должны быть prDatabaseAdapter (со строчной первой буквой). Увидеть, эффективная Java 2-е издание, пункт 56: соблюдать общепринятые правила именования и спецификацией языка Java, Java на SE 7 издание, 6.1 объявлений:


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

  2. Комментарии javadoc как @парам контексте не слишком полезны, они не говорят ничего больше, чем исходный код один. Я бы их убрать.

  3. Есть ли смысл создать DatabaseAdapter с нулевым контексте? Я бы проверил это в конструкторе и бросить и исключение NullPointerException , если это значение null. Посмотреть эффективная Java, 2-е издание, пункт 38: проверка параметров на валидность

2
ответ дан 17 июля 2012 в 08:07 Источник Поделиться