Существует 19 методов в нашем уровне DAO, каждый - некоторое изменение этого:
public TicketProp saveTicketProp(TicketProp prop) {
EntityManager em = this.emf.createEntityManager();
try {
em.getTransaction().begin();
prop = (TicketProp) em.merge(prop);
em.getTransaction().commit();
return prop;
} finally {
em.close();
}
}
Значение: В каждом методе мы обрабатываем нашу собственную транзакцию и окружаем его наконец блок. Мы тестируем приложение Джерси, таким образом, наши тесты JUnit расширяют JerseyTest. Каждый метод тестирования инстанцирует Серого контейнера, запускает тест, затем закрывает контейнер. EntityManagerFactory введен к пружине. Мы используем JPA, В спящем режиме.
Я контролирую соединения с нашим тестом MySQL DB, и они всегда высоки. Один единственный тест выполняет переменную MySQL "Max_used_connections" к 38. Для забавы я пошел и прокомментировал весь em.close () вызовы, и тест все еще использует 38 соединений.
Я использую встроенную организацию пула подключений Hibernate (не для использования напоминания, я знаю). Я все еще ожидал своего рода интеллектуальное объединение.
Я обрабатываю EntityManager неправильно? Как еще я могу закрыть соединения?