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.

Reply via email to