Как создать собственный менеджер Hibernate Session? - PullRequest
0 голосов
/ 01 июня 2018

У меня есть основное требование: 1) Нужен менеджер сессий Hibernate, который вызывается каждый раз, когда я открываю и закрываю или делаю что-нибудь еще, используя сессию.2) Он должен работать как оболочка для спящего режима.3) Например: я создаю сессионную утилиту, которая позволит одновременно создавать только 5 сессий, и если 5 из них уже используются, мой запрос должен ждать, пока я не получу один из 5 сессий назад.

1 Ответ

0 голосов
/ 02 июня 2018

На самом деле нет необходимости писать специальный Диспетчер сеансов , чтобы сделать это, поскольку вы можете использовать пул соединений, чтобы легко обрабатывать это поведение для вас.

Что вам сначала нужнодля этого нужно определить пул соединений с максимальным количеством доступных соединений, которое в вашем случае будет 5 .Затем вы хотите настроить пул соединений так, чтобы у него был тайм-аут ожидания с чем-то разумным.Просто поймите, что этот тайм-аут может быть проблематичным в сценарии атаки типа «отказ в обслуживании», поэтому используйте его на свой страх и риск.

С правильно настроенным пулом соединений, если первые 5 выполняют какую-то длительную задачу, которая занимает несколькосекунд, и приходит шестой запрос, он будет ожидать получения соединения с базой данных из пула, прежде чем продолжить, поэтому в любой момент времени с вашей базой данных будет только 5 одновременных соединений.

...