Доступ к базе данных, доступной только для чтения, является самым основным вариантом использования, о котором я могу думать. Другим вариантом будет приложение, которое управляет состоянием транзакции. И еще одно, если вы хотите использовать соединение, которое не будет участвовать в глобальной транзакции JTA. Последнее происходит в Quartz (см. JobStoreCMT).
Но, прибегая к помощи (это хороший вопрос!), Я нашел еще некоторое вдохновение в разделе Using Non-Transactional Connections серверного приложения документации компании Sun:
Основное преимущество использования нетранзакционными соединений является то, что издержки, связанные с привлечением и делистинга соединений в контексте транзакций, устраняются. Однако используйте такие подключения тщательно. Например, если для запроса базы данных во время выполнения транзакции, которая изменяет базу данных, используется не транзакционное соединение, запрос извлекает неизмененные данные в базе данных. Это связано с тем, что транзакция не выполняется. В другом примере, если не транзакционное соединение изменяет базу данных, а транзакция, которая работает одновременно, откатывается назад, изменения, сделанные не транзакционным соединением, не откатываются назад.
Это типичный вариант использования для не-транзакционного соединения: компонент, который обновляет базу данных в контексте транзакции, охватывающей несколько итераций цикла, может обновлять кэшированные данные, используя не транзакционное соединение для чтения данных до транзакция завершается.
Интересно ...
+1 Спасибо Pascal. У меня тоже есть Google, но я не нашел исчерпывающей информации. Параметры соединения JDBC, которые можно использовать с базами данных, но я не видел цели этого до вашего великого объяснения. – cetnar