but you did store the object

 super(emp); <== stores it in the model's cache for this request, so
load() never gets called on the same request

-igor

On Thu, May 29, 2008 at 2:13 PM, nanotech <[EMAIL PROTECTED]> wrote:
>
> Thanks for the reply...
>
> Herre is What I have...
>
> iterator() loads the list of employee instances
>    public Iterator iterator(int first, int count)
>    {
>        List employees = empService.getEmployees();
>
>        return employees.iterator();
>    }
>
> in model() you give each of your detachable models an instance of the
> employee,
>    public IModel model(Object object)
>    {
>          return new EmployeeModel((Employee) object, empService);
>    }
>
> and in EmployeeModel.java
>
> public class EmployeeModel extends LoadableDetachableModel {
>
> private EmployeeService empService;
>  private   Long id;
>    public EmployeeModel(Employee emp, EmployeeService empService) {
>        super(emp);
>        this.id = emp.getId();
>        this.empService= empService;
>    }
>
>    protected Object load() {
>         return empService.getEmployee(String.valueOf(id));
>    }
> }
>
> So, I my question is: when load() gets called from model() then where should
> it look it up...as you said it does not need to go to database
> again....because we already have the object. But, we did not store the
> object anywhere....so that empService.getEmployee(String.valueOf(id)); can
> go and look it up. When I retrieved Object in iterator() it was stored
> locally. Where should I store it...so that above method can read it again?
>
> Thanks for your help,
> RG
>
>
>
> igor.vaynberg wrote:
>>
>> i dont really get what the problem is
>>
>> iterator() loads the list of employee instances
>>
>> in model() you give each of your detachable models an instance of the
>> employee, so during that request the model doesnt need to load
>> anything because its already there...
>>
>> -igor
>>
>> On Thu, May 29, 2008 at 1:31 PM, nanotech <[EMAIL PROTECTED]> wrote:
>>>
>>> Thanks Igor for your reply.
>>>
>>> So, what do you suggest I should do:
>>>
>>> 1. After making the call in iterator() method Should I store the result
>>> object (Employee object ) in EmployeeDAO and then refer it later when I
>>> call
>>>        public IModel model(Object object) {
>>>                return new DetachableEmployeeModel((Employee)object);
>>>        }
>>> and then look it up (by employee Id) from that stored object?
>>>
>>> 2. Do I need to take care of synchronization when I store the object?
>>>
>>> Any other suggestions?
>>>
>>> Thanks,
>>> RG
>>>
>>>
>>>
>>>
>>>
>>> igor.vaynberg wrote:
>>>>
>>>> On Thu, May 29, 2008 at 12:09 PM, nanotech <[EMAIL PROTECTED]>
>>>> wrote:
>>>>>
>>>>> Hi,
>>>>> I have a search form (in a panel)with various search fields(as text
>>>>> fields)
>>>>> on it. User should be able to fill in any number of search parameters
>>>>> and
>>>>> the results are to be displayed in table (with pagenation + sorting
>>>>> capablity on columns) in a different panel on the same page under the
>>>>> search
>>>>> panel.
>>>>>
>>>>> I started looking at DataTable. It seems a option that will solve my
>>>>> need.
>>>>>
>>>>> Looking at the datatable example on
>>>>> http://www.wicket-library.com/wicket-examples/repeater/
>>>>>
>>>>> I observed that the following methods get called in the order
>>>>>
>>>>> 1. size() from CustomSortableDataProvider.
>>>>> 2. iterator() from CustomSortableDataProvider
>>>>> 3. load() from CustomLoadableDetachableModel.
>>>>>
>>>>> If I understand it correctly:-(Please  correct me if I am wrong)
>>>>>  * size() requires , the number of records that provider will be
>>>>> working
>>>>> with. So, in above case i'll have to make query thrrough service layer
>>>>> /DAO
>>>>> like this  Select count(*) from Employees where  firstName Like 'ABC'
>>>>> and
>>>>> lastName Like 'XYZ'
>>>>>
>>>>> * iterator(final int first, final int count) will call Service
>>>>> layer/DAO
>>>>> to
>>>>> do the actual query like this  Select * from Employees where firstName
>>>>> Like
>>>>> 'ABC' and lastName Like 'XYZ'
>>>>>
>>>>> * finally in model ...I will call the CustomLoadableDetachableModel and
>>>>> its
>>>>> load() method will load the actual Employee model  for each item that
>>>>> will
>>>>> be displayed on first page of the list being rendered in data table.
>>>>>
>>>>>
>>>>> It seems that there are too many queries in case of datatable. If the
>>>>> result
>>>>> set has thousands of records and we are displaying 100 per page then it
>>>>> will
>>>>> do 100+ queries to render all the items.
>>>>>
>>>>> Questions:
>>>>> 1. Did I sum up about DataTable correctly?
>>>>
>>>> no, there are only two queries per page render of datatable.
>>>>
>>>>> If yes, Won't this be a
>>>>> bottleneck considering the number of queries?
>>>>
>>>>> 2. Is there a better way of doing this?
>>>>
>>>> not until someone finds one.
>>>>
>>>> -igor
>>>>
>>>>>
>>>>> Thanks,
>>>>> RG
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> View this message in context:
>>>>> http://www.nabble.com/Using-DataTable-tp17543606p17543606.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/Using-DataTable-tp17543606p17545174.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/Using-DataTable-tp17543606p17545978.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