What's up, J.
Keep in mind that this is just my opinion, ok?
I'd say that depends of the amount of queries you want to perform in an entity. In my opinion, one of the best way to search objects is using NamedQueries. You can type a name for it and a query in JPQL (not very different from SQL). Than, in your DAO, you would create that NamedQuery and get the result.
Something like this
In your DAO, you can have something like this:
Of course, this is a very resumed version of the code. I omitted great part of it. Checkout
this doc for more details. In my opinion, it's the best documentation for JPA.
There's other ways to do it. You can create only the JPQL and store it in a class and, when you need it, you can get that JPQL sentence. I don't recommend for you to do only one thing: don't ever write the JPQL code in a class like a DAO. It's very nice to find all the queries in a class (or in the class that refers to that entity or something like that). Another thing you should study is Criteria.
About the 'flow' you said, I guess it's ok. I'd just add a few throws exceptions with the message to present in the screen. Something like... "Oh, we don't have an entity with that name.".
By the way, I'm sorry my english. It's late in Brazil and I'm tired =) Bad day at the office.