+1

I also run into the problem to show Sets. Many of them like (unfortunately the orderItems) are not big enough to use paging. Still I'd rather use those Sets directly than do a copy into a List.

Christian

On Fri, 29 Jul 2005 23:06:13 -0700, Igor Vaynberg <[EMAIL PROTECTED]> wrote:

+1

The problem with collections is that its hard to implement paging - you have
to convert to the list before you do that ;)

You will also need the IPageableComponent patch to be implemented to reuse
the paging navigation.

Igor


-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of
Jonathan Locke
Sent: Friday, July 29, 2005 9:59 PM
To: wicket-user@lists.sourceforge.net
Subject: Re: [Wicket-user] lists


i'm wondering if we shouldn't leave the existing listview
stuff alone altogether and instead start a new db-centric
CollectionView that can handle all this new stuff.  one thing
i keep running into with hibernate is that i want to view
Sets instead of lists.  a DatabaseCollectionView could be
tuned to database-specific issues like the things you guys
are bringing up.

Phil Kulak wrote:

>No, the query cache only caches the primary keys. The first
time it's
>run all the objects are sent accross and each one is cached
by primary
>key. The set of primary keys returned for that query are also cached.
>Then, the next time the same query is run, it issues a
select for each
>key in the cached set, with each one being a hit presuming
the objects
>haven't expired. If iterator does n+1 selects for the FIRST
query, that
>would be very bad. Most of the time you run a query only once and I
>wouldn't want to do n+1 selects for each of those cases.
>
>The more I think about this aproach the more I like it. I think it
>would be nice to keep ListView as it is, but have PageableListView
>delegate to an interface like this. And also, I don't think the
>interface is too sparse. I typed that last response to quickly. The
>PageableListView only needs to get results and the total. If
you want
>to support ordering, or anything else, you can do that
directly on the
>delegate.
>
>One thing I would add though, would be a
setPageableListView() method.
>If the DataProvider knows about its container, it can do
cleanup things
>when it's underlying data changes (like a removeAll() when a
sort order
>or filter is added).
>
>On 7/29/05, Igor Vaynberg <[EMAIL PROTECTED]> wrote:
>
>
>>>Yea, I can see how that would work. You're just saying to put the
>>>"black box" in the ListView, right?
>>>
>>>
>>There is no black box. The paging that the pagedlist does
is no longer
>>necessary.
>>
>>
>>
>>>Your DataProvider
>>>interface is a bit too simple (doesn't allow ordering, and EJB and
>>>Hibernate2 can't wrap an object in a model with only the object
>>>itself for reference), but I think it could work nicely with some
>>>fleshing out.
>>>
>>>
>>I am working on example that does both of the above, here
are some snippets:
>>
>>Sorting (I know its not generalized yet, just a working prototype)
>>
>>public class SortableContactDataProvider extends
ContactDataProvider {
>>        private String sort; // <===== yes later this will
be a list
>>of sortparams
>>        public Iterator iterator(int first, int count)
>>        {
>>                return getContactsDB().find(first, count,
sort).iterator();
>>        }
>>        public void setSort(String sort) {
>>                this.sort=sort;
>>        }
>>        public String getSort() {
>>                return sort;
>>        }
>>}
>>
>>Model wrapping:
>>
>>public class DetachableContactModel extends
>>AbstractReadOnlyDetachableModel {
>>        private long id;
>>        private transient Contact contact;
>>
>>        protected ContactsDatabase getContactsDB() {
>>                return DatabaseLocator.getDatabase();
>>        }
>>
>>        public DetachableContactModel(Contact c) {
>>                this(c.getId()); // <=========== here is the trick
>>                contact=c;
>>        }
>>
>>        public DetachableContactModel(long id) {
>>                if (id==0) throw new IllegalArgumentException();
>>                this.id=id;
>>        }
>>
>>        protected void onAttach()
>>        {
>>                if (contact==null) { // <======== no need
to load if
>>ctor with object used
>>                        contact=getContactsDB().get(id);
>>                }
>>        }
>>
>>        ...
>>}
>>
>>
>>
>>>Returning an Iterator is very nice. If all you need to do
is iterate,
>>>there's no reason to require a List.
>>>
>>>
>>What more can you do with a read-only list?
>>
>>
>>
>>>But because I'm
>>>implementing a List, there's no way to incorporate that.
>>>However, returning a list WILL use the cache, just not by default.
>>>You have to set useQueryCache to true.
>>>
>>>
>>I don't think that works the same way, I might be wrong
though. If you
>>set hibernate.use_query_cache=true and then set
>>query.setCachable(true) you will cache the entire resultset
which is
>>not the same. When you call
>>query.iterate() it uses n+1 queries to retrieve data, that
means the
>>first query gets all the primary keys, and then it retrieves the
>>objects object by object (the other n queries) so you end
up with each
>>object being cached separately in the cache not as the entire
>>resultset. This gives you a much higher cache-hit chance when
>>retrieving multiple objects and when retrieving an object by pk.
>>
>>-Igor
>>
>>
>>
>>
>>-------------------------------------------------------
>>SF.Net email is sponsored by: Discover Easy Linux Migration
Strategies
>>from IBM. Find simple to follow Roadmaps, straightforward articles,
>>informative Webcasts and more! Get everything you need to get up to
>>speed, fast. http://ads.osdn.com/?ad_id=7477&alloc_id=16492&op=click
>>_______________________________________________
>>Wicket-user mailing list
>>Wicket-user@lists.sourceforge.net
>>https://lists.sourceforge.net/lists/listinfo/wicket-user
>>
>>
>>
>
>
>-------------------------------------------------------
>SF.Net email is sponsored by: Discover Easy Linux Migration
Strategies
>from IBM. Find simple to follow Roadmaps, straightforward articles,
>informative Webcasts and more! Get everything you need to get up to
>speed, fast. http://ads.osdn.com/?ad_idt77&alloc_id492&opÌk
>_______________________________________________
>Wicket-user mailing list
>Wicket-user@lists.sourceforge.net
>https://lists.sourceforge.net/lists/listinfo/wicket-user
>
>
>


-------------------------------------------------------
SF.Net email is sponsored by: Discover Easy Linux Migration
Strategies from IBM. Find simple to follow Roadmaps,
straightforward articles, informative Webcasts and more! Get
everything you need to get up to speed, fast.
http://ads.osdn.com/?ad_id=7477&alloc_id=16492&op=click
_______________________________________________
Wicket-user mailing list
Wicket-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wicket-user







-------------------------------------------------------
SF.Net email is sponsored by: Discover Easy Linux Migration Strategies
from IBM. Find simple to follow Roadmaps, straightforward articles,
informative Webcasts and more! Get everything you need to get up to
speed, fast. http://ads.osdn.com/?ad_idt77&alloc_id492&op=click
_______________________________________________
Wicket-user mailing list
Wicket-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wicket-user



--
Christian Essl
        

        
                
___________________________________________________________ Gesendet von Yahoo! Mail - Jetzt mit 1GB Speicher kostenlos - Hier anmelden: http://mail.yahoo.de



-------------------------------------------------------
SF.Net email is sponsored by: Discover Easy Linux Migration Strategies
from IBM. Find simple to follow Roadmaps, straightforward articles,
informative Webcasts and more! Get everything you need to get up to
speed, fast. http://ads.osdn.com/?ad_id=7477&alloc_id=16492&op=click
_______________________________________________
Wicket-user mailing list
Wicket-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wicket-user

Reply via email to