gpt4 book ai didi

java - 在Spring JDBC中执行数据库 session 初始化SQL

转载 作者:行者123 更新时间:2023-12-02 08:19:14 24 4
gpt4 key购买 nike

我通过 JNDI 查找将 Spring JdbcTemplate/SimpleJdbcTemplate 与 Oracle 数据源 (oracle.jdbc.pool.OracleDataSource) 结合使用。该应用程序在连接到 Oracle 11g 数据库的 Oracle 应用服务器 (OAS) 10.1.3 上运行。

我正在建立的数据库连接是具有几个非默认数据库角色的帐户。当建立与数据库的物理连接时,我需要启用这些角色(可能通过 Oracle“set role”命令)。我没有看到任何方法来配置 Oracle 数据源来发出 SQL 命令来执行此操作。因为我的 Java 代码使用 Spring JDBC 类,所以它不处理打开和关闭连接。 Spring 是否提供某种方法在获得连接时运行一些初始化 SQL?

数据源定义:

<?xml version = '1.0' encoding = 'windows-1252'?>
<data-sources xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://xmlns.oracle.com/oracleas/schema/data-sources-10_1.xsd">
<native-data-source data-source-class="oracle.jdbc.pool.OracleDataSource"
jndi-name="jdbc/xxx" name="xxx"
url="jdbc:oracle:thin:@hostxxx:1541:xxx"
password="zzzzz" user="username"/>
</data-sources>

Spring bean 定义:

<jee:jndi-lookup id="dataSource" jndi-name="jdbc/xxx" />

最佳答案

您始终可以为 DateSource 创建代理并覆盖其 getConnection()

也许甚至using AOP :

@Aspect
public class DataSourceAspect {
@AfterReturning(value = "execution(* javax.sql.DataSource.getConnection(..))",
returning = "c")
public void afterGetConnection(Connection c) {
...
}
}

关于java - 在Spring JDBC中执行数据库 session 初始化SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5782008/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com