Okay cool, my DAO's are instanced, with a Provicer, and no PersistFilter. Thank you for the help everyone.
On Mar 3, 11:24 am, Alen Vrečko <[email protected]> wrote: > In my experience @Singleon with Provider<EM> only confuses people. > Sooner or later somebody will forget to use Provider<EM> and use EM > directly. Accident waiting to happen. > > You don't need to use PersistFilter. > > Cheers > Alen > > On Mar 3, 12:34 am, Owen Berger <[email protected]> wrote: > > > > > > > > > I am currently working on an application utilizing Guice / JPA / > > Hibernate to get info from my database. > > > I have read the Guice docs on working with JPA and EntityManagars > > here:http://code.google.com/p/google-guice/wiki/JPA, > > > But I am having trouble understanding when I should make my DAO > > Implementations Singletons. > > > I have read this question on StackOverflow regarding Spring's use of > > DAO's where it says: > > > "Instantiating a DAO for every request would be crazy." > > > Does that carry over for DI containers other than Spring? If I am > > injecting a DAO Provider into my Servlet and calling when needed, > > should the DAO Service Implementation be a Singleton? > > > Here is a basic outline of one of my DAO's: > > > public DAOImpl implements DAOService { <-- SHOULD THIS BE ANNOTATED > > @Singleton? > > > @Inject > > private EntityManager em; > > // OR > > // @Inject > > // private Provider<EntityManager> emProvider - If it's a > > singleton. > > > @Inject > > DAOImpl(OtherServices os) { > > this.otherServices = os; > > } > > > @Transactional > > public MyPersistedObject getPersistedObject(long id) { > > MyPersistedObject mpo = em.find(MyPersistedObject.class, id); > > return mpo; > > } > > > } > > > And how it's called: > > > @Singleton > > public MyServlet(HttpRequest req, HttpRequest res) > > extends ServletInterfaceOfTheDay { > > > private final daoService; // If Singleton > > // OR > > // private final Provider<DAOService>; If Instanced DAO > > > @Inject > > MyServlet(DAOService dao) { > > this.daoService = dao; > > } > > > // Gather Information from request here... > > > MyPersistedObject mpo = > > daoService.getPersistedObject(requestIdInfo); > > // OR daoService.get().getPersistedObject(requestIdInfo); > > > // Process Response Info here.... > > > } > > > Thanks for the help. I also posted this on StackOverflow.com if you > > want points > > there...http://stackoverflow.com/questions/9541046/should-guice-injected-daos... -- You received this message because you are subscribed to the Google Groups "google-guice" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/google-guice?hl=en.
