Two options for fetching data are possible: FetchType.EAGER and FetchType.LAZY. Collections are loaded EAGER when they are fetched fully at the time their parent is fetched. That is, with nested classes the whole class hierarchy is fetched, even if all the subentities (children) are not needed.

With the LAZY option, data is loaded on-demand, e.g. when a certain entity is requested explicitly. Thus, when the parent entity is loaded with the lazy option, the children entities are not loaded per default. Only in case they are really needed (e.g. a certain method was called via GUI).
Here is an example how entities are marked to be loaded lazily:

public class Parent {

private String id;

private String name;

@OneToMany(fetch = FetchType.LAZY)
private List children;

// etc.


In Apache Wicket, so-called models are used to link the data and the representation in the graphical user interface. If models aren't used, one will never see the new value as during construction a fixed value is used. The GUI element will not look for a new value during a second rendering.

The situation can be corrected by passing a model to the used GUI element (e.g. ba passing the model to the GUI element's constructor).


Using Elasticsearch to handle the search on the website. An easy to install-and-use tool that works right out of the box. Analyzers that are really helpful to analyze a string by converting it into tokens or terms. Can also have a GUI when used combined with Kibana.


Subscribe to GUI