Поддерживать диспетчер персистентности JDO вместо его закрытия? - PullRequest
5 голосов
/ 31 июля 2010

Нужно ли вообще закрывать диспетчер персистентности? Можете ли вы просто оставить один открытым и использовать его все время, то есть просто повторить этот шаблон:

Transaction tx = pm.currentTransaction();
try {
    tx.begin();
    // do stuff
    tx.commit();
} finally {
    if (tx.isActive()) tx.rollback();
}

Каковы недостатки этого? Кажется, это имеет смысл, поскольку вам никогда не понадобится «отсоединять» объекты из-за закрытия диспетчера сохраняемости?

1 Ответ

4 голосов
/ 09 августа 2010

Вы можете держать его открытым все время, если хотите.Основная проблема, которую следует учитывать, - когда вы выполняете запросы на обновление, насколько быстро вы хотите, чтобы изменения вступили в силу.При закрытии диспетчера сохраняемости эти изменения сохраняются немедленно, тогда как в противном случае явное обращение к хранилищу данных будет зависеть от сохранения изменений.Если вы используете транзакции, это не имеет значения.Помимо этого, на самом деле нет никаких недостатков.При первой инициализации PM (при первом использовании после развертывания) возникают большие затраты времени процессора +, но после этого открытие / закрытие PM в основном бесплатное.

...