it is a proxy that implements the org.hibernate.Session interface :)
Chris Lewis <[EMAIL PROTECTED]> 29.10.2007 13:37 Bitte antworten an "Tapestry users" <users@tapestry.apache.org> An Tapestry users <users@tapestry.apache.org> Kopie Thema Re: Antwort: T5: 'wrapping' hibernate DAOs as services Sorry, this just sounds to magical. My DAO explicitly takes a Session - org.hibernate.Session - and holds that reference for its entire life. Basic code: import org.hibernate.Session; public class UserDAOImpl implements UserDAO { private Session session; public UserDAOHibernate(Session session) { this.session = session; } //.... } How can this session, which is declared as (and passed in as) an org.hibernate.Session, be 'fresh' after multiple requests? Davor Hrg wrote: > yes, that's right, > > that proxy will handle PER_THREAD scope > > Hrg Davor > > On 10/29/07, Chris Lewis <[EMAIL PROTECTED]> wrote: > >> Kris, >> >> My DAOs are ignorant of Tapestry - I have no @Inject annotations in >> them. Instead they receive the Session object in the constructor, so >> technically they do have state. This is why I thought I might need to >> configure them as per-thread. However it sounds like you are saying that >> the Session that gets passed to my DAO constructor is actually a proxy >> to the actual hibernate session, and that this proxy takes care of >> getting a valid session. Is that right? >> >> Thanks :) >> Chris >> >> Kristian Marinkovic wrote: >> >>> hi chris, >>> >>> i did this too :) >>> >>> it is not necessary to make your DAOs have per-thread >>> scope (as long as they dont have a state!... they souldn't anyway). >>> All you have to do is to inject the session. tapestry-hibernate >>> generates a session proxy object that will obtain the actual >>> session from a per-tread HibernateSessionManager. >>> >>> g, >>> kris >>> >>> >>> >>> >>> Chris Lewis <[EMAIL PROTECTED]> >>> 29.10.2007 08:37 >>> Bitte antworten an >>> "Tapestry users" <users@tapestry.apache.org> >>> >>> >>> An >>> Tapestry users <users@tapestry.apache.org> >>> Kopie >>> >>> Thema >>> T5: 'wrapping' hibernate DAOs as services >>> >>> >>> >>> >>> >>> >>> Hello all, >>> >>> I'm building out the persistence infrastructure of my T5 app and would >>> like some opinions on accessing my DAOs. >>> >>> Summary: >>> I have DAOs for accessing my entities that provide common functionality >>> as well as prevent my higher-level web-app parts (pages/components) from >>> knowing about my persistence layer. That is, I won't be @Inject-ing >>> org.hibernate.Session instances, which while easy, would instantly tie >>> me to hibernate. Instead I'll be injecting my DAOs - or at least >>> top-level interfaces implemented by them (UserDAO, etc). >>> >>> Now what I have to deal with is accessing my DAOs from my >>> pages/components. It seems to me that 'wrapping' them as per-thread >>> services would make this extremely easy. In reality I'm not actually >>> wrapping the DAOs - I'm simply binding them and tagging them as >>> per-thread. Each implementation takes an org.hibernate.Session in its >>> constructor, which if I understand correctly, Tapestry IoC supports >>> transparently (constructor type args that is). >>> >>> What I end up with are DAOs that are ignorant of their role (as far as >>> their existence in Tapestry), and can be obtained by plain old Tapestry >>> IoC injection. The DAOs are thus created per-thread, but this seems >>> fairly logical to me as they should be cheap objects. They do hold >>> instance references to the Session, but as long as the DAOs are >>> per-thread this shouldn't present a problem. >>> >>> Does this seem like a sane path or am I overlooking something major? >>> >>> Thanks for the input! >>> >>> Sincerely, >>> Chris >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: [EMAIL PROTECTED] >>> For additional commands, e-mail: [EMAIL PROTECTED] >>> >>> >>> >>> >>> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: [EMAIL PROTECTED] >> For additional commands, e-mail: [EMAIL PROTECTED] >> >> >> > >