Re: IDataProvider Implementation.
In my apps, I bring them all in whenever the first call to iterator or size is done, and cache them until detach. It's a very reasonable pattern. Then in the model method, I basically do new Model(object) -- Jeremy Thomerson http://www.wickettraining.com On Tue, Nov 11, 2008 at 8:03 AM, Graeme Knight [EMAIL PROTECTED] wrote: Hi. From the examples I've seen the IDataProvider implementation of the iterator method brings back (for example) a list of keys from the database. The model method uses something like a LoadableDetachableModel to populate a model for use by the consumer using the list of keys previously retrieved. This seems like a lot of database hits to me. Is this simply because of the serialization/model mechanism? It seems to me that the iterator could/should bring back the data in one hit and then after use be detached. Is this common? Many thanks, Graeme. -- View this message in context: http://www.nabble.com/IDataProvider-Implementation.-tp20440141p20440141.html Sent from the Wicket - User mailing list archive at Nabble.com. - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: IDataProvider Implementation.
Not a good idea for large objects. A few days back I improved load time of a page from more then 40 sec to about 5 sec by replacing new Model(object) with a proper LoadableDetachableModel. Nevertheless, there is no reason to let the LoadableDetachableModel get the object if you already have it, just pass the object to the constructor! E.g. see first ctor below. public class LoadableMemberModel extends LoadableDetachableModelMember { @SpringBean private MemberService memberService; private long memberId; // // Constructor that has object has direct parameter // public LoadableMemberModel(Member member) { super(member); this.memberId = member.getId(); } * *public LoadableMemberModel(long memberId) { this.memberId = memberId; } protected Member load() { InjectorHolder.getInjector().inject(this); return memberService.getById(memberId); } } Regards, Erik. Graeme Knight wrote: Hey Jeremy, Thanks for the heads up - actually that's what I ended up doing this morning. Works like a charm! Cheers, Graeme. Jeremy Thomerson-5 wrote: In my apps, I bring them all in whenever the first call to iterator or size is done, and cache them until detach. It's a very reasonable pattern. Then in the model method, I basically do new Model(object) -- Jeremy Thomerson http://www.wickettraining.com On Tue, Nov 11, 2008 at 8:03 AM, Graeme Knight [EMAIL PROTECTED] wrote: Hi. From the examples I've seen the IDataProvider implementation of the iterator method brings back (for example) a list of keys from the database. The model method uses something like a LoadableDetachableModel to populate a model for use by the consumer using the list of keys previously retrieved. This seems like a lot of database hits to me. Is this simply because of the serialization/model mechanism? It seems to me that the iterator could/should bring back the data in one hit and then after use be detached. Is this common? Many thanks, Graeme. -- View this message in context: http://www.nabble.com/IDataProvider-Implementation.-tp20440141p20440141.html Sent from the Wicket - User mailing list archive at Nabble.com. - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] -- Erik van Oosten http://www.day-to-day-stuff.blogspot.com/ - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: IDataProvider Implementation.
That, and that typically your ORM (hibernate, etc) will put the object in second level cache. The LDM should hit that cache most of the time between requests. Martijn On Tue, Nov 11, 2008 at 3:58 PM, Erik van Oosten [EMAIL PROTECTED] wrote: Not a good idea for large objects. A few days back I improved load time of a page from more then 40 sec to about 5 sec by replacing new Model(object) with a proper LoadableDetachableModel. Nevertheless, there is no reason to let the LoadableDetachableModel get the object if you already have it, just pass the object to the constructor! E.g. see first ctor below. public class LoadableMemberModel extends LoadableDetachableModelMember { @SpringBean private MemberService memberService; private long memberId; // // Constructor that has object has direct parameter // public LoadableMemberModel(Member member) { super(member); this.memberId = member.getId(); } * *public LoadableMemberModel(long memberId) { this.memberId = memberId; } protected Member load() { InjectorHolder.getInjector().inject(this); return memberService.getById(memberId); } } Regards, Erik. Graeme Knight wrote: Hey Jeremy, Thanks for the heads up - actually that's what I ended up doing this morning. Works like a charm! Cheers, Graeme. Jeremy Thomerson-5 wrote: In my apps, I bring them all in whenever the first call to iterator or size is done, and cache them until detach. It's a very reasonable pattern. Then in the model method, I basically do new Model(object) -- Jeremy Thomerson http://www.wickettraining.com On Tue, Nov 11, 2008 at 8:03 AM, Graeme Knight [EMAIL PROTECTED] wrote: Hi. From the examples I've seen the IDataProvider implementation of the iterator method brings back (for example) a list of keys from the database. The model method uses something like a LoadableDetachableModel to populate a model for use by the consumer using the list of keys previously retrieved. This seems like a lot of database hits to me. Is this simply because of the serialization/model mechanism? It seems to me that the iterator could/should bring back the data in one hit and then after use be detached. Is this common? Many thanks, Graeme. -- View this message in context: http://www.nabble.com/IDataProvider-Implementation.-tp20440141p20440141.html Sent from the Wicket - User mailing list archive at Nabble.com. - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] -- Erik van Oosten http://www.day-to-day-stuff.blogspot.com/ - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] -- Become a Wicket expert, learn from the best: http://wicketinaction.com Apache Wicket 1.3.4 is released Get it now: http://www.apache.org/dyn/closer.cgi/wicket/1.3. - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: IDataProvider Implementation.
Hi guys, I am using hibernate and it is caching (which is great) so that overhead is not a problem - after some reflection I think it appears to me that because you get rid of the loadabledetachablemodel to 'save database hits' (which if cached, doesn't really) then the affect is more serialized data. Bad. Got it. Thanks, Graeme. Martijn Dashorst wrote: That, and that typically your ORM (hibernate, etc) will put the object in second level cache. The LDM should hit that cache most of the time between requests. Martijn On Tue, Nov 11, 2008 at 3:58 PM, Erik van Oosten [EMAIL PROTECTED] wrote: Not a good idea for large objects. A few days back I improved load time of a page from more then 40 sec to about 5 sec by replacing new Model(object) with a proper LoadableDetachableModel. Nevertheless, there is no reason to let the LoadableDetachableModel get the object if you already have it, just pass the object to the constructor! E.g. see first ctor below. public class LoadableMemberModel extends LoadableDetachableModelMember { @SpringBean private MemberService memberService; private long memberId; // // Constructor that has object has direct parameter // public LoadableMemberModel(Member member) { super(member); this.memberId = member.getId(); } * *public LoadableMemberModel(long memberId) { this.memberId = memberId; } protected Member load() { InjectorHolder.getInjector().inject(this); return memberService.getById(memberId); } } Regards, Erik. Graeme Knight wrote: Hey Jeremy, Thanks for the heads up - actually that's what I ended up doing this morning. Works like a charm! Cheers, Graeme. Jeremy Thomerson-5 wrote: In my apps, I bring them all in whenever the first call to iterator or size is done, and cache them until detach. It's a very reasonable pattern. Then in the model method, I basically do new Model(object) -- Jeremy Thomerson http://www.wickettraining.com On Tue, Nov 11, 2008 at 8:03 AM, Graeme Knight [EMAIL PROTECTED] wrote: Hi. From the examples I've seen the IDataProvider implementation of the iterator method brings back (for example) a list of keys from the database. The model method uses something like a LoadableDetachableModel to populate a model for use by the consumer using the list of keys previously retrieved. This seems like a lot of database hits to me. Is this simply because of the serialization/model mechanism? It seems to me that the iterator could/should bring back the data in one hit and then after use be detached. Is this common? Many thanks, Graeme. -- View this message in context: http://www.nabble.com/IDataProvider-Implementation.-tp20440141p20440141.html Sent from the Wicket - User mailing list archive at Nabble.com. - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] -- Erik van Oosten http://www.day-to-day-stuff.blogspot.com/ - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] -- Become a Wicket expert, learn from the best: http://wicketinaction.com Apache Wicket 1.3.4 is released Get it now: http://www.apache.org/dyn/closer.cgi/wicket/1.3. - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] -- View this message in context: http://www.nabble.com/IDataProvider-Implementation.-tp20440141p20441836.html Sent from the Wicket - User mailing list archive at Nabble.com. - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]