Должен ли я связать соединение JDBC с потоком сервлета? - PullRequest
0 голосов
/ 29 декабря 2011

Я использую jndi для доступа к источнику данных dbcp.

В рамках одного запроса сервлета при каждом вызове static_dataSource.getConnection() возвращает новое соединение.

В спящем режиме есть функция getCurrentSession(). Насколько я понимаю, эта функция возвращает соединение, привязанное к текущему потоку. Должен ли я также связать мое соединение JDBC с потоком?

Моя цель - вызвать сложную бизнес-логику в рамках одной транзакции, которая содержит много вызовов DAO, на один http-запрос. Как и в Spring, я могу аннотировать весь класс обслуживания с помощью @ Transactional.

1 Ответ

1 голос
/ 29 декабря 2011

Я бы порекомендовал вам не связывать JDBC-соединение с потоком.Используйте пул соединений и держитесь за соединение в течение кратчайшего времени: получите данные из пула, выполните операцию, закройте соединение, вернитесь в пул.

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

...