The most common usage is to place it in your Session Bean, because the idea of Seam from the beginning is to reduce layer by joining JSF managed bean and Session Bean for Action class. But some people add another DAO layer for this, but I'd prefer using Session Bean because Session Bean is a plain POJO and you can easily unit test it. So why would I need another layer for this?
Ah, but I do want to reduce the number of layers. And I realize that I have some session beans/SEAM objects where I could put some private query methods. But what if another bean needs the same query? Code duplication is bad, so where to put the common code (query method)?
In a stateless session bean that both SEAM objects can access?
On the entity object itself? (and in that case, how do I best obtain the EntityManager/Hibernate Session?)