Java 使用Oracle存储过程进行事务传播和持久性上下文同步

Java 使用Oracle存储过程进行事务传播和持久性上下文同步,java,oracle,stored-procedures,transactions,jta,Java,Oracle,Stored Procedures,Transactions,Jta,我一直在寻找将JTA事务从Java代码传播到Oracle存储过程的可能性,但没有发现任何真正相关的东西。我问这个问题是因为一位同事正在处理这个问题,他告诉我这对他很有效 我想知道的是,如果某个操作没有被刷新,因为事务仍然打开,然后调用了一个存储过程(这个过程不控制它自己的事务),那么存储过程能够在持久性上下文中看到挂起的操作吗?换句话说,持久性上下文是否会以某种方式与底层数据库的事务内存同步 我正在为甲骨文JPA考试而学习,我正在读的书中没有描述过这类事情。然而,我在谷歌上看到一些网站,人们说这

我一直在寻找将JTA事务从Java代码传播到Oracle存储过程的可能性,但没有发现任何真正相关的东西。我问这个问题是因为一位同事正在处理这个问题,他告诉我这对他很有效

我想知道的是,如果某个操作没有被刷新,因为事务仍然打开,然后调用了一个存储过程(这个过程不控制它自己的事务),那么存储过程能够在持久性上下文中看到挂起的操作吗?换句话说,持久性上下文是否会以某种方式与底层数据库的事务内存同步

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


提前谢谢

我使用Spring+Hibernate和自制的framework+Hibernate做了同样的事情。我相信JPA也会做同样的事情


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

对于对该主题感兴趣的人,请阅读coderanch主题讨论: