0

在将一些 C++ 代码移植到 Java 的过程中,我需要调用带有输入/输出参数的存储过程。由于我无法更改此过程(例如,使用 hibernate 和 em.createNativeQuery),我想我必须从 EntityManager 中解开休眠会话以获取底层 jdbc 连接。

我现在的问题是这个连接会参与由 EJB-Container (JBoss AS 7.1) 启动的容器管理事务,还是在这种情况下我必须手动管理事务?

4

1 回答 1

0

与 Hibernate session/EntityManager 相关联的连接与当前事务上下文相关联。由于容器已经启动了 JTA 事务(假设这里是这种情况),您不需要手动管理事务。

但是,您可能必须管理一个不同的问题 - 事务级缓存以及与其他缓存的缓存同步。如果存储过程的调用以使缓存陈旧的方式更新数据库,那么您需要清除它们的内容。有时您可能只需要清除某些条目,而有时它可能是整个缓存本身;所有这一切都取决于哪些类型的条目会变得陈旧。

于 2012-11-09T09:02:15.640 回答