1

I have question about usage of EntityManager. I've read that is not wise, opening and closing an EntityManager for every simple database call in a single thread!

Is it better to have one EntityManager per all DAO methods or one EntityManager per DAO method?

4

2 回答 2

3

应该创建 EntityManager,执行“工作单元”,然后关闭。

http://docs.jboss.org/hibernate/stable/entitymanager/reference/en/html_single/#d0e980

一个工作单元可能类似于:插入、更新、删除或一些更复杂的业务逻辑。您应该为每个方法获得一个新的 EntityManager 实例,因为每个方法都应该包含一个工作单元。

更新:还有扩展实体管理器的概念,只要您的应用程序正在运行或会话打开,它就会保持打开状态。不过,这将由容器管理。

于 2013-06-10T14:28:01.293 回答
-1

我将简要解释一下 Entity 和 DAO 之间的关系。

考虑一个主要由两个实体组成的在线船舶预订系统的例子

1.Admin - 执行添加、修改、删除船舶详细信息等

2.用户 - 在线预订船票,在线支付等。

在这种情况下,对于管理员实体(添加、修改、删除船舶详细信息 - 该实体可以执行的不同类型的功能),需要一个 AdminDAO,它将包含管理员实体可以执行的所有功能。

这个实体从任何 java servlet 类中调用。

简而言之,每个实体都需要一个 DAO。

于 2013-06-09T10:09:55.443 回答