Выполнить оператор SQL при создании соединения - PullRequest
0 голосов
/ 18 января 2012

Чтобы наше приложение работало должным образом, нам нужно выполнить инструкцию SQL для каждого нового соединения, прежде чем это соединение будет передано приложению.

Как соответствующим образом настроить источник данных в WAS 7?

Мы нашли (устаревшую) опцию для проверки источника данных с помощью оператора sql, который, как мы надеемся, добьется цели (сотрудник сейчас тестирует его).Это звучит неправильно, поскольку мы не «проверяем» соединение, а настраиваем его правильно.Кроме того, он устарел, так что это, вероятно, перестанет работать с будущими версиями websphere

. Есть ли чистый и правильный способ сделать это?

Оператор, который мы хотели бы выполнить, -

ALTER SESSION NLS_SORT='GERMAN_AI'

Один альтернативный подход: приложение основано на hibernate, поэтому, если мы сможем убедить hibernate выполнить инструкцию перед использованием соединения, это также сработает.

Ответы [ 3 ]

1 голос
/ 18 января 2012

Ни в коем случае не эксперт WAS, но если вы можете настроить Tomcat JDBC для обеспечения пула соединений с базой данных, у него есть параметр среди прочих, называемый "initSQL".Вы можете установить для него оператор SQL, который вы хотите, чтобы пул соединений выполнялся при каждом создании соединения.

Пул соединений Tomcat JDBC

A.

1 голос
/ 18 января 2012

Если бы это был я, я бы просто использовал подход "проверка соединения":

  • Работает!
  • Принцип ЯГНИ гласит: «беспокоиться об устаревании, когда это произойдет ... , если это когда-нибудь случится» - вероятно, через много лет или никогда
  • Вы не добавите никакой ценности для бизнеса, найдя «правильный» способ
  • Вы можете отказаться от этого и продолжить с какой-то реальной работой, которая фактически добавляет ценность вашему проекту

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

0 голосов
/ 18 января 2012

Один из способов - использовать собственный диалект Hibernate, поскольку вы фактически указываете «другой» способ общения с базой данных.Я понятия не имею, куда добавить код инициализации.

...