所以我有一个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?
答案 0 :(得分:1)
当您使用find()或其他查询加载实体时,它将进入托管状态。它与特定会话绑定,并且当会话被关闭/刷新时与其绑定的实体正在更新(因此所有修改将传播到DB中)。并且更新正在更新的实体的HasA关系(entityA中的entityB)取决于级联设置。