После некоторого переосмысления кажется, что DAO на самом деле не подходящее название для того, что я хотел сделать. Может быть, это действительно Фасад, как сказал Паскаль.
Я только что нашел пример Netbeans Petstore - пример приложения JavaEE6, см. здесь - где у них есть ItemFacade , который отвечает за поиск / создание / удаление объектов из базы данных. Это бин сеанса без состояния. Выглядит так:
@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 можно также рассмотреть -разработана.