On Jan 23, 2008 6:32 PM, mfs <[EMAIL PROTECTED]> wrote:
>
> Wouldn't the former approach have more overahead since it would first load
> the Contact (when the getmodelobject() is called) and than the deletion
> operation..
>
> The later one atleast just does the deletion in one call though based on its
> primary key..

well, that all depends. if you are using something like hibernate or
something else that has a query cache then the chances of a query to
load the object are significantly reduced. also, how often do users
delete the object? so you are really optimizing a rare usecase...

what you gain is that your UI code is not polluted with calls that
require you to load things. you simply have an IModel to deal with.

-igor


>
>
>
>
> igor.vaynberg wrote:
> >
> > 1) when the page is opened the second time there will not be N
> > selects, next time please confirm that it is indeed the case before
> > posting to this list. it is not the case because when the page is
> > opened the second time the items in dataview are discarded and
> > recreated in the exact same manner as when the page was opened the
> > first time...
> >
> > 2) why the detachable model is there:
> > in order to identify an entity in the database you use its primary
> > key. the contactdetachablemodel is like that primary key. lets assume
> > in your dataview.populateitem() you do
> >
> > item.add(new link("delete", item.getmodel()) { onclick() {
> > dao.delete(getmodelobject()); }});
> >
> > that link needs to be tied to the contact it needs to delete
> > somehow...how do you do that. well you can use the model like i did
> > above, or you can do
> >
> > populateitem(item item) {
> >   Contact c=item.getModelObject();
> >   item.add(new link("delete", new model(c.getid()) { onclick() {
> > dao.deletebypk(getmodelobject()); }});
> >
> > but this breaks encapsulation because you need to know what contact's
> > primary key is, it is much easier to deal with an imodel and not care.
> > also if you need to pass this contact down to a panel, that panel can
> > also just take an imodel and be able to retrieve that contact on
> > subsequent requests without having to know how to do that via a
> > primary key. makes sense?
> >
> > to sum up: the contactdetachablemodel is like an abstraction to a
> > primary key and a way to retrieve the contact by its primary key.
> >
> > -igor
> >
> > On Jan 23, 2008 3:29 AM, beam <[EMAIL PROTECTED]> wrote:
> >>
> >> Hello everybody!
> >> There is a page PagingPage in Wicket Examples(repeater folder)
> >> And this page contain next code:
> >> DataView dataView = new DataView("pageable", new ContactDataProvider())
> >>
> >> ContactDataProvider implements method iterator:
> >>
> >>         public Iterator iterator(int first, int count)
> >>         {
> >>                 return getContactsDB().find(first, count, "firstName",
> >> true).iterator();
> >>         }
> >> It returns List of Contacts.
> >>
> >> And there is next code:
> >>         /**
> >>          * wraps retrieved contact pojo with a wicket model
> >>          *
> >>          * @see
> >> org.apache.wicket.markup.repeater.data.IDataProvider#model(java.lang.Object)
> >>          */
> >>         public IModel model(Object object)
> >>         {
> >>                 return new DetachableContactModel((Contact)object);
> >>         }
> >> So why we need to wrap every item of this List to DetachableContactModel.
> >> When page open in a first time  there will be only on SELECT request to
> >> Database(iterator(int first, int count) -> SELECT * FROM Contacts LIMIT
> >> first, count)). But when page will open in a second time there will be N
> >> SELECTs (where N == count) for every Contact object in
> >> DetachableContactModel because it calls method load().
> >>
> >> So I don't understand why wrap items(Contact in this example) to
> >> DetachableContactModel? One select to retrieve all Contact on the page
> >> better than N SELECTs, isn't it?
> >>
> >> P.S. Sorry for my bad english
> >> --
> >> View this message in context:
> >> http://www.nabble.com/Confused-with-IDataProvider-tp15039652p15039652.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]
> >>
> >>
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
> >
> >
>
> --
> View this message in context: 
> http://www.nabble.com/Confused-with-IDataProvider-tp15039652p15057496.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]
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to