2012-03-12 20 views
0

我一直在寻找从Java代码传播JTA事务到Oracle存储过程的可能性,并且发现没有什么真正相关的。我问这是因为一位同事正在处理这件事,并告诉我这对他有效。事务传播和持久性上下文与Oracle存储过程的同步

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

我正在为Oracle JPA考试念书,而且这本书没有在我正在阅读的书中描述。然而,我读过一些我搜索过的网站,有人说这种事务传播是有效的,因为JTA和某些JDBC驱动程序中的数据库事务之间存在整合(我无法想象它是如何工作的,事务管理器是否知道的数据库事务??)。

在此先感谢!

+0

对于那些对此主题感兴趣的读者,请阅读coderanch主题讨论:http://www.coderanch.com/t/570119/ORM/java/Transaction-propagation-Persistence-Context-synchronization – 2012-03-22 14:10:10

回答

2

我用Spring + Hibernate和自制框架+ Hibernate做了同样的事情。我相信同样的事情将与JPA一起工作。

如果您在与JPA相同的交易中致电您的SP,则一切顺利,唯一的问题就是您提到的问题,因此请致电您的persistenceManager之前拨打flush(),然后再调用您的SP实体将在交易的上下文中写入数据库。