从EntityManager获取jdbc连接时的事务行为

时间:2012-11-09 08:49:30

标签: hibernate java-ee stored-procedures jpa transactions

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

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

1 个答案:

答案 0 :(得分:0)

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

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