Are you saying 1 entity = 1 concrete, non-generic dao? Which basically means if we wanted to use generics, we should still extend the generic class for each concrete entity. (Similar to the HiA GenericEjb3Bean pattern.) I didn't think of using one interface per DAO type, however... that helps keep the # of files down.
So if I wanted to implement a conversation using EJB3 DAOs, the DAO code would essentially have to be aware that it will be used in a conversation? (IOW, DAO will need to know in advance if it needs to be @Stateful and with an extended @PersistenceContext.) This essentially gives the DAO higher awareness of business logic. My concept of a DAO is that it is a dumb object that is only aware of the underlying DB schema. In fact, I've been trying to code for SEAM in a manner such that I can essentially package all the Entities/DAOs in one jar (or .par) and it can be used by any number of .ear/.war packages, and maybe someday by POJOs. Maybe I'm misunderstanding something...