Почему происходит утечка соединения с БД без @Transactional? - PullRequest
0 голосов
/ 14 сентября 2018

Я использую Spring JPA в проекте Spring-boot.У меня есть простой именованный запрос.Процесс вызывается каждые 10 секунд.Без аннотации @Transactional через мой интерфейс репозитория соединение в пуле соединений заканчивается.Я получаю сообщение «Тайм-аут: Пул пуст. Невозможно получить соединение в течение 30 секунд, недоступно [размер: 100; занято: 100; бездействует: 0; последнее ожидание: 30000]».

Однако после добавления @Транзакционная аннотация, она работает просто отлично.Какова связь между аннотацией и соединениями, возвращаемыми обратно в пул?Я думал, что Spring JPA автоматически освободит соединение после завершения вызова метода.

 @Repository
 @Transactional
 public interface StoredProcedureRepository extends  CrudRepository<StoredProcedureDO, Long> {          
        @Procedure(name = "invokeStoredProc")
        void invokeStoredProc(@Param("id") Long id, @Param("date") java.sql.Date date);
    }

 @Entity    
 @NamedStoredProcedureQuery(name ="invokeStoredProc",
            procedureName = "schema.storedProc",
            parameters = {
                    @StoredProcedureParameter(mode = ParameterMode.IN, name = "id", type = Long.class),
                    @StoredProcedureParameter(mode = ParameterMode.IN, name = "date", type = java.sql.Date.class)})
    public class StoredProcedureDO implements Serializable {
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...