我对EntityManager的使用有疑问。 我已经读过,在单个线程中为每个简单的数据库调用打开和关闭一个EntityManager是不明智的!
每个DAO方法有一个EntityManager或每个DAO方法有一个EntityManager更好吗?
答案 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。