Hibernate JPA EntityManager, возможно, вызывает проблемы с производительностью? - PullRequest
0 голосов
/ 05 февраля 2020

Основная проблема: мы работаем над внутренним приложением, созданным из Java 8. Поскольку мы добавляем все больше и больше классов и методов DAO в нашу внутреннюю часть, некоторые запросы становятся медленнее. Мы уже исключили возможность того, что это может быть связано с самими запросами или базой данных. Запросы не имеют проблем при запуске непосредственно на таком инструменте, как SQL Developer. Они выполняются быстро. Проблема в том, что когда мы запускаем их в бэкэнде нашего приложения, они работают очень медленно. Параллельность запросов также не является причиной, поскольку мы не выполняем запросы асинхронно.

Итак, теперь мы думаем, что это может быть связано с нашими кодами или конфигурацией. Мы используем JPA для наших запросов, и он реализован через Spring и Hibernate. Это мы, как мы определили наш EntityManager.

@Repository
public class MyDao {
  @PersistenceContext(unitName = "myPersistenceUnit")
  protected EntityManager entityManager;

  public EntityManager getEntityManager() {
     return entityManager;
  }

  //dao methods. We use the same EntityManager for every DAO method
}

Что-то не так с нашей конфигурацией? Может ли проблема медленного времени выполнения быть связана с тем, как мы создаем наш EntityManager? Должны ли мы каждый раз создавать новый EntityManager? Одна полезная информация, которую мы обнаружили, заключается в том, что когда мы смотрели статистику базы данных, выполнение наших запросов показало очень высокий уровень использования ввода-вывода. Выполнение их на SQL разработчику не дает такую ​​же статистику ввода / вывода.

Может кто-нибудь помочь нам в этом? наша база данных кстати Oracle 12 c

...