Федор Сазонов, Илья Сазонов — От антипаттерна к инструменту: скрытая польза открытой сессии
Joker — Конференция о будущем разработки
0:00 / 0:00
Федор Сазонов, Илья Сазонов — От антипаттерна к инструменту: скрытая польза открытой сессии
2 294 просмотра · 7 месяцев назад
Joker — Конференция о будущем разработки
57,7 тыс. подписчиков
2 294 просмотра · 7 месяцев назад
Подробнее о Java-конференциях:
— весной — JPoint: https://jrg.su/gTrwHx
— осенью — Joker: https://jrg.su/h7yvG4
— —
Скачать презентацию с сайта — https://jrg.su/qrR45z
Нам хотелось бы обсудить один вопрос разработки на Spring в связке c JPA.
Одна из самых распространенных проблем производительности здесь — это исчерпание коннекшен пула.
Но как это ни странно, единственный способ управлять жизненным циклом соединения в Spring — это аннотация @Transactional. Ее применение автоматически приводит сразу к трем действиям.
1. Создание EntityManager.
2. Резервирование соединения в коннекшн пуле.
3. Старт физической транзакции в БД.
Единственный способ средствами фреймворка сделать разделяемую сессию (то есть EntityManager) без создания транзакции — это OSIV, что признано антипаттерном большинством специалистов. Получается, что проблема исчерпания соединений в связке Spring с JPA есть, а инструментов для тонкого контроля коннекшенов нет.
Если есть такие абстракции, как сессия, соединения и транзакция, странно, что ими нельзя управлять по отдельности. Мы расскажем, как это исправить.