Container Managed和Application Managed EntityManager之间的差异

wae*_*lbk 5 entitymanager jpa-2.0

我有一个问题需要理解容器管理和应用程序管理的实体管理器之间的差异?

如果你能给我一个说明差异的例子,我将非常感激.

Arj*_*jms 8

对于容器管理的实体管理器,容器管理此实体管理器的生命周期.对于应用程序管理的应用程序(意味着您,程序员)管理它.

一个简单但非常明显的区别是您必须调用close()应用程序管理的实体工厂.当您使用容器管理的容器时,容器会为您执行此操作.

应用程序管理的实体管理器的持久性上下文也不是事务范围.它在创建实体管理器时启动,在关闭时结束.这使得它有点像扩展的持久化上下文,区别在于您可以在任何地方使用这种类型的实体管理器,而不仅仅是在有状态bean中.

最后,应用程序管理的实体管理器是唯一可以正式配置为使用资源本地事务的管理器,这些事务独立于容器可能运行的任何(JTA)事务.

请注意,在Java SE中,您只有应用程序管理的实体管理器.因此,当您只是将Hibernate添加到Tomcat(一种流行的组合)时,您基本上就是在使用应用程序管理的实体管理器.