Use Lazy Loading
Most
BMP entity beans are implemented so that ejbLoad( ) populates all data fields in the bean. In nearly every
case this is fine because all this data will be used at some point.
However, there are instances when you should delay loading parts of
the data until it’s actually needed. This process,
called lazy-loading, will save memory and
decrease database access times.
The most common example of this is an entity bean that contains large
binary or text data in Blob or
Clob form. If this data is accessed less often
than other data fields in the entity bean, it makes sense to delay
reading this data until the client requests it. To implement this
lazy-loading technique, you simply have to use a flag to indicate
whether the data has been loaded. Example 2-7 shows
a basic instance of this.
public class ForumMessageBean implements EntityBean { // Persisted fields private Integer id; private String title; private String author; private String messageText; // This is your large data field. private boolean isMessageTextLoaded; // Skipping irrelevant EJB methods . . . public Integer ejbCreate (String title, String author, StringBuffer message) throws CreateException { // Create new record in the database: // INSERT INTO message VALUES (.....) // and get ID back. this.id = id; this.title = title; this.author = author; this.messageText = messageText; // Indicate that the text is in the bean. isMessageTextLoaded = true; } public ...