java - 事务传播和持久性 与 Oracle 存储过程的上下文同步

标签 java oracle stored-procedures transactions jta

我一直在寻找将 JTA 事务从 Java 代码传播到 Oracle 存储过程的可能性,但没有发现真正相关的内容。我问这个问题是因为一位同事正在研究这个并告诉我这对他有用。

我想知道的是,由于事务仍然打开并且随后调用存储过程(该过程不控制它自己的事务),某些操作尚未刷新,存储过程是否能够看到持久化上下文中的挂起操作了吗?换句话说,持久性上下文是否会以某种方式与底层数据库的事务内存同步?

我正在准备 Oracle JPA 考试,我正在阅读的书中没有描述这样的事情。然而,我在谷歌搜索的一些网站上读到,人们说这种事务传播是有效的,因为在某些 JDBC 驱动程序中 JTA 和数据库事务之间存在集成(我只是无法想象它是如何工作的,事务管理器是否知道)数据库事务??)。

提前致谢!

最佳答案

我使用 Spring+Hibernate 和自制框架+Hibernate 做了同样的事情。我相信同样的事情也适用于 JPA。

如果您在与 JPA 相同的事务中调用 SP,一切都会正常,唯一的问题是您提到的问题,所以只需调用 flush()在您的persistenceManager上在调用 SP 之前,您对实体所做的修改将在事务上下文中写入数据库。

关于java - 事务传播和持久性 与 Oracle 存储过程的上下文同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9672321/

相关文章:

asp.net - 将 List<string> 传递给存储过程

MySQL 错误 : PROCEDURE can't return a result set in the given context

java - 查找并检索连续的匹配项

java - 如果大小写匹配,则从 ArrayList 中删除名称不起作用

java - 对 2D ArrayList 进行冒泡排序

visual-studio-2010 - .NET4.0 VS2010 中的 Oracle.DataAccess 2.112.1.0 引用问题

mysql - 在 mysql 中使用 while 循环创建存储过程时出现错误

java - 检查单词是否属于语言环境

sql - oracle db中具有多个字段的条件唯一约束

java - Hibernate 在从注解创建表时不会创建索引