You want to use this constructor:

http://wicket.apache.org/apidocs/1.4/org/apache/wicket/model/LoadableDetachableModel.html#LoadableDetachableModel%28T%29

This way, the LDM will be initialized with the object "pre-loaded" and
won't need to go to the database.  However, on subsequent requests
(such as if a user clicks on a "remove" link or something), the model
will go to the database (in the load() method) and get the object
again.



On Mon, Feb 28, 2011 at 12:14 PM, Juansoft <[email protected]> wrote:
> First render thanks for your replies.
>
> @vov: If i use this:
>
>  public IModel<Entity> model(Entity entity)
>  {
>    return new Model<Entity>(entity);
>  }
>
> In this case the memory footprint of the session grows because you return
> Model object that is not a transient object(or this is what I've read in
> wicket documentation...!!) .  ¿This means that if you dataview have 100 rows
> you have 100 Model<Entity> stored in your session?
>
> ¿To avoid this do not exist LoadableDetachableModel what is detached after
> page rendering?
>
>
> @James Carman:
>
> This is the aspect of the most LoadableDetachableModel used in DataView
> examples. Specifically in wicket official examples. For each row in DataView
> this create new DetachableContactModel , store his ID. After in method
> populateItem of Dataview, getModelObject() call result in direct call to
> DetachableContactModel.load() that again return object to a database.
>
> Using hibernate this object is cached (or so I have understood), but if use
> hand made DAO (like me) that simply query and return a POJO populated this
> result in more database conections and querys! Am I right?
>
>
> public class DetachableContactModel extends LoadableDetachableModel
> {
>    private long id;
>
>      protected ContactsDatabase getContactsDB()
>       {
>
>        return DatabaseLocator.getDatabase();
>       }
>
>    /**
>     * @param c
>     */
>    public DetachableContactModel(Contact c)
>    {
>        this(c.getid())
>    }
>
>    /**
>     * @param id
>     */
>    public DetachableContactModel(long id)
>    {
>        if (id == 0)
>        {
>            throw new IllegalArgumentException();
>        }
>        this.id = id;
>    }
>
>    /**
>     * @see java.lang.Object#hashCode()
>     */
>    public int hashCode()
>    {
>        return Long.valueOf(id).hashCode();
>    }
>
>    /**
>     * used for dataview with ReuseIfModelsEqualStrategy item reuse strategy
>     *
>     * @see org.apache.wicket.markup.repeater.ReuseIfModelsEqualStrategy
>     * @see java.lang.Object#equals(java.lang.Object)
>     */
>    public boolean equals(final Object obj)
>    {
>        if (obj == this)
>        {
>            return true;
>        }
>        else if (obj == null)
>        {
>            return false;
>        }
>        else if (obj instanceof DetachableContactModel)
>        {
>            DetachableContactModel other = (DetachableContactModel)obj;
>            return other.id == this.id;
>        }
>        return false;
>    }
>
>    /**
>     * @see org.apache.wicket.model.LoadableDetachableModel#load()
>     */
>    @Override
>    protected Object load()
>    {
>        // loads contact from the database
>        return getContactsDB().get(id);
>    }
>
>
> }
>
>
>
> --
> View this message in context: 
> http://apache-wicket.1842946.n4.nabble.com/Perfomance-of-IDataProvider-tp3325777p3328345.html
> Sent from the Users forum 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