我开发了一个使用JPA和无状态EJB的应用程序。基本上,应用程序包括负责实现业务案例的EJB,以及负责从底层数据库获取和删除数据的EJB。
示例:
public interface UserContextAccessEJBLocal {
/**
* Persists the passed instance of {@link UserContex}.
*
* @param userContext an instance of {@link UserContext}
* @throws NullPointerException if userContext is null.
* @throws IOException if an I/O related error occurs.
*/
void remove(UserContext userContext)
throws IOException;}
我的问题是:如果一个JPA实体在EJB a中被提取并传递给EJB B,我可以假设传递的实例属于注入到B中的EntityManager管理的持久性上下文吗?或者我必须提取它的ID并重新提取它吗?
关于我的问题,无状态EJB和有状态EJB之间有区别吗?
您应该避免在不同事务之间传递实体,但只要调用与加载实体的调用是同一事务的一部分,那么在EJB之间传递实体就不是问题。
为了进一步帮助您,我们需要一个具体的例子来说明如何,尤其是为什么在EJB之间传递实体,也许这根本没有必要。