我想知道在Java中事务和EntityManager是如何管理的。
如果我理解的话,EJB有一个EntityManager,而EntityManager有一个EntityTransaction。这是真的吗?
我读过这个规范,http://docs.oracle.com/javaee/5/tutorial/doc/bncij.html,有一些我不明白的地方。它被认为是两个bean;我的问题是,当bean-2的方法被注释为"Required“时,这个bean如何知道它是否存在当前事务?在两个bean中考虑的entiyManager是不同的,所以bean-2不能访问对象和当前事务,不是吗?
发布于 2014-02-09 10:32:28
在jee中,你可以把容器想象成一个无所不知的老大哥,在这种情况下,他通过在部署时内省你的ejb并在运行时使用它们周围的代理来知道你的事务发生了什么,当你通过注入ejb查找或获取时,你得到的不是ejb的一个实例,而是一个引用了它的代理,所以当你调用ejb时,你实际上是在调用一个代理,这个代理最终会调用你的ejb实例,这样容器就会跟踪你的事务和其他一切。和任何好的老大哥一样,它可以与几乎所有的东西通信,包括你所有的实体管理器,以便为他们提供关于当前事务的一些上下文。
请记住,jee的全部要点是,您的ejb不需要了解事务或除业务之外的任何其他内容,并且尽可能多的内容由容器管理。有一些很好的信息here
https://stackoverflow.com/questions/21650441
复制相似问题