创建连接时执行sql语句

时间:2012-01-18 08:46:24

标签: java database datasource connection-pooling websphere-7

为了使我们的应用程序正常工作,我们需要在每个新连接上执行一个SQL语句,然后再将该连接分发给应用程序。

如何在WAS 7中相应配置数据源?

我们找到了(不推荐使用的)选项来使用sql语句验证数据源,希望这样做(同事正在测试它)。这听起来不对,因为我们没有“测试”连接,而是正确设置它。它也被弃用了,所以这可能会停止使用未来版本的websphere

有没有干净正确的方法来做到这一点?

我们要执行的声明是

ALTER SESSION NLS_SORT='GERMAN_AI'

一个替代方法:应用程序是基于hibernate的,所以如果我们可以说服hibernate在使用连接之前执行语句,那么这也可以。

3 个答案:

答案 0 :(得分:1)

无论如何都不是WAS专家,但如果您可以设置Tomcat JDBC来提供数据库连接池,那么它有一个名为“initSQL”的参数。您可以将其设置为您希望在创建连接时运行连接池的SQL语句。

Tomcat JDBC Connection Pool

一个。

答案 1 :(得分:1)

如果是我,我会使用“连接测试”方法:

  • 有效!
  • YAGNI原则说“担心发生时会发生弃用...... 如果它曾经发生过” - 可能已经过去几年或从未
  • 您不会通过找到“正确”方式添加任何商业价值
  • 你可以放弃这个并继续进行一些实际为项目增值的真正的工作

唯一的缺点是它将在每个时间执行连接测试,这可能在连接的生命周期中多次,但是那么 - 它是一个非常快速的执行语句,并且是幂等,所以没问题。

答案 2 :(得分:0)

一种方法是使用自定义Hibernate方言,因为您实际上指定了一种与数据库通信的“不同”方式。我不知道在哪里添加初始化代码。