EntityManager如何在EJB 3.0上下文中工作,但不在EJB上下文之外工作

时间:2014-07-30 09:54:11

标签: hibernate reflection jpa-2.0 ejb-3.0 glassfish-3

  • 所以我有一个EJB EjbA和一个名为EntityA的hibernate实体。

  • EnitityA包含属性EnitityB和一些String类型属性。

  • EjbA方法methodA操纵EnitityA

现在,如果我调用methodA EjbA,则EnitityA上的操作将在EJB调用完成后反映在db中。

我知道当我们调用EJB方法时,我们实际上调用了一个代理实现,它首先启动db事务,打开hibernate session ....

但是

如何调用方法调用中已更改的hibernate.update上的EntityA?基本上ejb容器如何知道在这个EJB方法调用中只修改了entityA?

1 个答案:

答案 0 :(得分:1)

当您使用find()或其他查询加载实体时,它将进入托管状态。它与特定会话绑定,并且当会话被关闭/刷新时与其绑定的实体正在更新(因此所有修改将传播到DB中)。并且更新正在更新的实体的HasA关系(entityA中的entityB)取决于级联设置。