Value List Handler

author-image
CIOL Bureau
Updated On
New Update

Avijeet Dash and Satyabrata Dash

Advertisment

While using the J2EE Framework one should be aware of the consequences of
using it under various scenarios. The most critical concern in a distributed
paradigm is the latency time, that is the time taken to serve a client request.
And this time is significantly higher compared to a local computing environment,
as the object communication is potentially remote. One such consideration is the
use of Entity beans. We learnt to use Entity beans as a coarse grained object in
the Composite Entity pattern. Composite entity reduces the number of
fine-grained entity beans and thus inter-entity bean communications, which have
a significant overhead. One more consideration while using Entity beans is the
use of its finder methods. Ejb-finder methods are used in a search and query
context, where the client wants a list of items and the size is unknown, which
could be very large.

The way ejb-finder methods work is they return a collection of EJBObject
references. Every container implementation has a certain amount of finder method
overhead for creating a collection of EJBObject references. Finder method
behavior performance varies depending on a vendor's container implementation.
According to the EJB specification, a container may invoke ejbActivate() methods
on entities found by a finder method. At a minimum, a finder method returns the
primary keys of the matching entities, which the container returns to the client
as a collection of EJBObject references. This behavior applies for all container
implementations. Some container implementations may introduce additional finder
method overhead by associating the entity bean instances to these EJBObject
instances to give the client access to those entity beans. This overhead can
significantly impede application performance if the application includes queries
that produce many matching results.

Advertisment

Value List Handler Pattern suggests an alternate approach of using ejb-finder
methods, that is to use DAO objects to query using JDBC and store results in a
list object holding fine-grained value objects. There are many advantages of
this approach.

  1. Avoiding overheads associated with ejb-finder methods
  2. . When the client
    is the presentation tier, and a large list of items is required for view
    operations, its efficient to pass collection of fine-grained local value
    objects rather than remote entity beans collection. When the client is the
    business tier and the list of items resulted could be less, using finder
    method could be preferred.

  3. Caching of searched results, typically when client needs huge list of
    items for browsing, it may be less concerned about its correctness, what the
    client needs is a fast access of the list in a page-by-page iterator manner
    where each page displays a sub-list of the result set. When the value list
    handler is implemented in the state-full session bean fashion the list can be
    saved for further client requests. A read-only data pattern can be used load
    data at start up time to avoid database lookups for static kind of data.
  4. Querying flexibility, using ejb-finders in CMP the query has to be
    specified in the EJB Query language in the configuration xml. This language
    has lesser flexibility that using sql in DAO objects, though EJB2.0 EJBQL has
    more flexibility.
  5. Allows differing entity bean transaction. While client views large
    list of data transaction requirements are not required. And the transaction
    requirements can be differed until one item has been selected for updation.
    While updating or inserting single row data entity bean offers better option.
  6. Improves network performance. Network performance may improve because
    only requested data, rather than all data is shipped (serialized) to the
    client on an as-needed basis.

Advertisment

Structure
of Value List Handler

Sequence
diagram of Value List Handler

Advertisment

Sample Code

Advertisment

/*

This sample code of value list handler is found at

http://www.phptr.com/corej2eepatterns/codeChap8_2.html#ex8.29

Advertisment

http://www.phptr.com/corej2eepatterns/codeChap8_2.html#ex8.30

http://www.phptr.com/corej2eepatterns/codeChap8_2.html#ex8.31

*/

Advertisment

Reference

http://developer.java.sun.com/developer/restricted/patterns/ValueListHandler.html

http://www.precisejava.com/javaperf/j2ee/Patterns.htm

http://www.orionserver.com/docs/jdbc/javax/sql/CachedRowSet.html

http://java.sun.com/blueprints/patterns/j2ee_patterns/fast_lane_reader/index.html

The authors are senior developers at MindTree Consulting. They can be reached
at avijeetd@mindtree.com and satyabrata_dash@mindtree.com.

tech-news