【发布时间】:2011-02-09 21:28:55
【问题描述】:
我正在做一个项目,我们需要决定如何公开我们的持久层。
目前有两种选择:
1) 使用普通的 DAO。这些将实现一个接口并在作为 EJB 的业务组件中注入(可能使用 Weld)。在内部,他们会使用 JPA/Hibernate 来实现持久性。
2) 不是使用 Weld 注入 DAO,而是将它们实现为 EJB,并在业务组件中注入 @EJB。
当我们不使用持久层的功能(例如事务管理 - 业务层处理此问题)时,将 EJB 用于持久层真的有意义吗?
在 Weld 上使用 EJB(或相反)是否有任何性能损失?
你认为哪个选项最好?
【问题讨论】:
-
您是否在“容器内”部署?哪个容器?使用 EJB3可以潜在地使部署更加直接。使用 JEE6 恕我直言,几乎没有理由避免 EJB 和许多情况 for 使用它。价值 2 便士。
-
那些你根本不需要额外的 EJB 特性(例如安全性、事务......)的情况呢?我认为在这些情况下,CDI 是一个不错的选择?
标签: dependency-injection ejb-3.0 dao