2016-07-13 6 views
0

Я использую JPA для сохранения записей в базе данных Oracle. Каждый раз, когда я запускаю приложение, он переходит в конкретный каталог и анализирует каждый отдельный файл и загружает в таблицы. Обычно для обработки требуется тысячи файлов.Должен ли я избегать создания EntityManagerFactory слишком много раз

Новый EntityManagerFactory создается каждый раз, когда обрабатываю файл и когда запись вставлена. Таким образом, EMF открывается тысячи раз каждый раз. Когда я отлаживаю это, я обнаружил, что создание EMF - это самый трудоемкий шаг, который занимает более 90% времени выполнения. В среднем создание новой ЭДС занимает около 2-3 секунд. Может быть, я должен просто открыть EMF-соединение один раз в начале приложения до начала запуска файлов? Хорошо ли, чтобы EMF открывалась все время?

+1

EntityManagerFactory является потокобезопасным, и, как вы обнаружили, имеет множество настроек при получении, загрузке и проверке всего, что требуется для единицы непрерывности. EntityManager - легкий, но не потокобезопасный - эти объекты должны быть получены по мере необходимости, в то время как EMF централизованно/статически загружается. – Chris

+0

@ Chris Спасибо за объяснение разницы. Пожалуйста, сделайте это ответом, и я закрою его. – ddd

ответ

1

Выведено из моего комментария: EntityManagerFactory является потокобезопасным, и, как вы обнаружили, имеет множество настроек при получении, загрузке и проверке всего, что требуется для единицы непрерывности. EntityManager - легкий, но не потокобезопасный - эти объекты должны быть получены по мере необходимости, в то время как EMF централизованно/статически загружается.

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