【发布时间】:2016-10-10 21:45:28
【问题描述】:
我正在使用 MyBatis 3.3.1、Spring 4.3、Jersey 2.22 和 Oracle 12c 创建一个休息服务。我的事务由 Spring 使用 DataSourceTransactionManager 和 @Transaction 注释进行管理。我还使用 MyBatis 池数据源作为我的 javax.sql.DataSource。我不明白为什么要重用数据库会话。
在我的应用程序中,我设置了一个 oracle 客户端标识符:DBMS_SESSION.SET_IDENTIFIER("my id")。通过调试日志语句,我可以看到 MyBatis 为每个 MyBatis sql 操作创建新会话。我也有调试从 DBMS_SESSION.UNIQUE_SESSION_ID 打印出数据库会话标识符。
我不明白的是,如果我多次访问我的休息端点,唯一的会话 ID 是相同的,并且我上次访问的标识符仍然设置。
MyBatis 每次获取新的 SQLSession 时不应该使用新的 oracle 会话吗?为什么预言机会话总是一样的?
谢谢。
【问题讨论】:
标签: spring mybatis oracle12c spring-mybatis