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]
