In the past I would corral all of my queries as string constants in a query manager class -- an old Indian trick my grandfather taught me. Having a single location for database queries had a material impact in terms of improving maintainability.
I believe the objective of @NamedQuery is to precompile (with hints) and to keep EJBQL/SQL out of your methods. I am definitely not sure about that. I am also confused why they are entity bean meta data if they end up in a global namespace. Seems like a specialized Query class would be better.
Can anybody give me a definitive statement on the purpose of NamedQuery annotations versus inline queries or a set of logically organized enums?
NamedQueries can be pre checked and precompiled by the persistence unit.