少し考え直したところ、DAOは実際には私がやりたかったことの正しい名前ではないようです。パスカルが言ったように、多分それは本当にファサードです。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の例も適切に設計されていると考えられるためです。