经过一番重新思考,DAO 似乎并不是我想做的事情的正确名称。正如 Pascal 所说,也许它真的是一个 Facade。我刚刚找到了 Netbeans Petstore 示例 - 一个 JavaEE6 示例应用程序,请参见此处- 他们有一个ItemFacade负责从数据库中查找/创建/删除实体。它是一个无状态会话 Bean。看起来像这样:
@Stateless
public class ItemFacade implements Serializable {
@PersistenceContext(unitName = "catalogPU")
private EntityManager em;
public void create(Item item) { ... }
public void edit(Item item) { ... }
public void remove(Item item) { ... }
public Item find(Object id) { ... }
public List<Item> findAll() { ... }
public List<Item> findRange(int maxResults, int firstResult) { ... }
public int getItemCount() { ... }
}
因此,作为一个结论,我不再称我的 DAO DAO 而是仅称为 PersonEJB(我认为“PersonFacade”可能会被误解)并将其设为 @Stateless,因为我认为 Netbeans 示例可以被认为是精心设计的。