2015-11-07 3 views
0

Я пытаюсь поместить все DatabaseRequests внутри модуля в Android, чтобы централизовать все подключения к DDBB в том же месте.OrmLite внутри модуля Android

Мне интересно, не ошибаюсь ли я в этом. Приложения работают правильно, но я беспокоюсь о том, как это сделать.

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

public static void insertUser(Context context, User user) { 
    DataBaseHelper mDataBaseHelper = OpenHelperManager.getHelper(context, DataBaseHelper.class); 

    try { 
     Dao<User, Integer> dao = mDataBaseHelper.getUserDao(); 
     dao.createOrUpdate(user); 

    } catch (SQLException e) { 
     e.printStackTrace(); 
    } finally { 
     if (mDataBaseHelper != null) { 
      OpenHelperManager.releaseHelper(); 
     } 
    } 
} 

Контекст парам контекст деятельности, который делает запрос.

Есть ли проблемы с производительностью, связанные с этим кодом?

Заранее спасибо;)

ответ

0

Нет, Серый (ORMlite создатель) сказал в этом посте:

is it ok to create ORMLite database helper in Application class?

Что является наиболее важным с вашим кодом, что гарантирует единый databaseHelper экземпляр. Каждый экземпляр имеет свое собственное подключение к базе данных , и проблемы возникают, когда в программе открыто более одного (1) соединений. Sqlite обрабатывает несколько потоков, используя одно и то же соединение в то же время, но он не обрабатывает много соединений, и могут возникнуть несоответствия данных .

И в вашем случае у вас может быть несколько соединений за один раз.

Я могу задать вам мой подход к тому, как я использую ORMlite, у меня есть один одноэлементный класс public class DbHelper extends OrmLiteSqliteOpenHelper, который заботится о создании подключения к базе данных и содержит все поля Dao. У вас будет код обновления базы данных и некоторые другие вещи, поэтому рассмотрите вопрос о создании классов фасадов. В моем случае каждый фасад содержит один объект Dao для одного класса модели, где я сохраняю логику для сложного извлечения элементов (и для простых случаев я просто делегирую его объекту Dao.

+0

По словам Грея, вы найдете более подходящим, чтобы поместить все логика внутри класса приложения, как объясняет сообщение? – MarcForn

+0

Вы когда-либо явно выпускали свой DBHelper, @Than? Или вы просто создаете «Singleton», который подключен к жизненному циклу «Application». – Sakiboy

Смежные вопросы