【问题标题】:Execute a sql statement when a connection is created创建连接时执行sql语句
【发布时间】:2012-02-13 00:11:23
【问题描述】:

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

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

我们找到了(已弃用)选项来使用 sql 语句验证数据源,希望它可以解决问题(同事正在测试它)。这听起来是错误的,因为我们不是在“测试”连接,而是正确设置它。它也已被弃用,因此这可能会停止与未来版本的 websphere 一起使用

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

我们要执行的语句是

ALTER SESSION NLS_SORT='GERMAN_AI'

另一种方法:应用程序是基于休眠的,所以如果我们可以说服休眠在使用连接之前执行该语句,这也可以。

【问题讨论】:

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


    【解决方案1】:

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

    • 有效!
    • YAGNI 原则说“当它发生时担心被弃用......如果它曾经发生过” - 可能几年后或永远不会
    • 你不会通过找到“正确”的方式来增加任何商业价值
    • 您可以放弃它,继续进行一些真正为您的项目增加价值的真正工作

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

    【讨论】:

      【解决方案2】:

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

      Tomcat JDBC Connection Pool

      一个。

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 2021-09-05
          • 2012-12-10
          • 1970-01-01
          • 2011-07-02
          • 1970-01-01
          • 2014-11-29
          • 2016-03-15
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多