每个DAO方法的EntityManager

时间:2013-06-09 09:53:18

标签: java hibernate entitymanager hibernate-entitymanager

我对EntityManager的使用有疑问。 我已经读过,在单个线程中为每个简单的数据库调用打开和关闭一个EntityManager是不明智的!

每个DAO方法有一个EntityManager或每个DAO方法有一个EntityManager更好吗?

2 个答案:

答案 0 :(得分:3)

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

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

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

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

答案 1 :(得分:-1)

我将在Entity和DAO之间简要介绍你。

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

组成

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

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

在此方案中,对于Admin实体(添加,修改,删除船舶详细信息 - 此实体可以执行的不同类型的功能),需要一个AdminDAO,其中包含管理实体可以执行的所有功能。

此实体从任何java servlet类调用。

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