【发布时间】:2021-06-07 04:23:38
【问题描述】:
我正在尝试使用 Mybatis 将临时值放入雪花临时表中。在 WebSphere Application Server 的 server.xml 文件中配置的连接详细信息。
理想情况下,值应保留在服务器请求级别。
但只要应用程序运行,临时表及其数据仍然可用。对于每个请求,我都能看到以前的插入数据。
相同的代码在 Oracle 全局临时表中运行良好。
public class TempDao{
@Inject
SqlSession sqlSession;
public int saveValues(List<TemporaryValue> values) {
logger.debug("Saving items on temporary table");
try {
final Map<String, Object> parameters = new HashMap<>();
parameters.put("jobList", values);
return sqlSession.insert("com.some.sql.insertJobs", parameters);
} catch (Exception e) {
ExceptionUtils.propagate(e);
}
return 0;
}
}
JNDI 连接:
<dataSource id="SnowflakeDataSource" jndiName="jdbc/BM_SF" maxPoolSize="100" queryTimeout="300s" statementCacheSize="1000" type="javax.sql.DataSource">
<properties URL="jdbc:snowflake://adpdc_cdl.us-east-1.privatelink.snowflakecomputing.com" databaseName="***" password="****" schema="**" user="**" warehouse="****strong text**" />
<jdbcDriver javax.sql.DataSource="net.snowflake.client.jdbc.SnowflakeBasicDataSource" libraryRef="SharedLib"/>
</dataSource>
【问题讨论】:
-
到底是什么问题?雪花临时表在创建它们的会话期间可用。它们在会话终止时被销毁。
-
是的,你的问题是什么?
-
你是怎么关闭JDBC连接的,能举个例子吗?
-
听起来您的代码中有连接池,因此会话正在被重用(以节省连接设置时间),因此您的临时表的寿命比您预期的要长。
-
是的,连接池中的所有连接的数据库会话 ID 都是相同的。雪花 JDBC 驱动程序似乎有些问题。
标签: jdbc snowflake-cloud-data-platform mybatis websphere-liberty snowflake-schema