我想知道如何在Java EE中管理事务和EntityManager。
如果我理解,EJB有一个EntityManager,而EntityManager有一个EntityTransaction。这是真的吗?
我已阅读此规范http://docs.oracle.com/javaee/5/tutorial/doc/bncij.html并且有一些我不明白的内容。它被认为是2豆;我的问题是当bean-2的方法用“Required”注释时,这个bean如何知道它是否存在当前事务?所考虑的entiyManager在2个bean中是不同的,所以bean-2不能访问对象和当前事务,不是吗?
答案 0 :(得分:0)
在jee中你可以把容器想象成一个知道它的大哥,在这种情况下,他通过在部署时内省你的ejbs并在运行时使用代理来了解你的事务是怎么回事,当你通过注入ejb查找或获取,你得到的不是你的ejb的实例,而是一个引用它的代理,所以当你调用你的ejbs时,你实际上是在调用一个最终会调用你的ejb实例的代理,这个容器跟踪你的交易和其他一切的方式,并且作为任何好兄弟,它可以与几乎所有的实体经理进行沟通,以便为他们提供有关当前交易的一些背景信息。
请记住,jee的全部意义在于您的ejbs不必了解任何有关交易或除业务之外的任何其他信息,并且尽可能多的事情由容器管理。有一些很好的信息here