Использование нескольких методов в транзакции - PullRequest
1 голос
/ 17 августа 2011

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

Однако до меня дошло, что использование транзакций значительно повышает скорость, поэтому, естественно, я хочуиспользовать это.

Моя проблема заключается в следующем;В идее абстракции после анализа всей информации одного субъекта информация отправляется правильному объекту (классу), и внутри этого объекта есть метод, который добавит ее в базу данных.После этого он возвращается к анализатору, который продолжает читать следующую тему, которая, в свою очередь, будет снова отправлена ​​в правый (и, вероятно, другой) класс.

Это реализовано с помощью оператора switch, где каждый случай указывает на свой конструктор класса.

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

Чтобы сделать это немного понятнее или быстрее читать;Идея кода была бы такой:

    Class parser(){
  database.beginTransaction();
    try{  
         // start parsing in a whole different class, which also points to SQL queries (in different classes again) in the entitys with a switch
       }catch(Exception e){
    database.endTransaction();
       }
        database.endTransaction();
}

Надеюсь, я сформулировал свой вопрос достаточно четко.

С уважением,

1 Ответ

1 голос
/ 17 августа 2011

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

Пример из Документы :

db.beginTransaction();
try {
    // do all the parsing in here
    ...
    db.setTransactionSuccessful();
} finally {
    db.endTransaction();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...