Eclipse
Services
"It's rare to find high quality programmer-level support at any price. Objectmatter has provided excellent and timely support to experienced Java designers. They've prevented a lot of prematurely gray hairs and saved days of programming time, and I am very grateful for their support."
Jeanette C. MacNeille
President
Eclipse Services, A Division of Quadrivium, Inc.
"VBSF has enabled us to provide incremental production releases of AdPro Classified throughout its two year development period. In each release we’ve been able to add functionality and change the domain model without having to worry about rewriting and testing the database access code. We evaluated several O-R mapping tools and only VBSF had the features we needed to support modeling our legacy data."
Victor Langelo
Senior Programmer
Eclipse Services, A Division of Quadrivium, Inc.
About Eclipse Services
Eclipse Services is a software development company with a long-standing interest in component technologies and databases. Our projects focus on the publishing and education markets. Our main product, AdPro™, is an integrated business system for newspapers.
About AdPro
AdPro Display™ was developed in the early 90’s as a
display ad tracking system for The Daily Pennsylvanian, the newspaper at
the University of Pennsylvania, and is now widely used at large universities
around the country. The initial version was developed in a two-tier client
server framework using Oracle and ACIUS’ database 4th Dimension as a SQL
front end. This framework allowed cross platform compatibility for our
market, which includes about 50% Macintosh users and 50% PC users.
Currently we are developing a new classified ad tracking
system with a three tier architecture using Oracle, an EJB compatible application
server, and Java Swing-based client applications. When the classified system
is complete, we will also port the original display ad system to the new
environment.
AdPro Display manages ad processing for a newspaper
from ad entry through issue sizing, production checkpoints, and production
of ads for each day's paper. After each issue is published, AdPro also
manages functions such as sending tear sheets, invoicing, and production
of statements. AdPro provides sales and business functions including customer
relationship management, accounts receivable, A/R Aging, budgeting, specialized
revenue tracking useful to university papers, and accounting reports for
A/R through Trial Balance. The new classified system extends these features,
and will add a new set of functionality related to classified ad management.
Here's a screen shot of the ad entry form for the new classified system.
How VBSF Has Helped Us:
One goal for the AdPro rewrite is to support many of
the new feature requests we’ve received over the years. That means we would
need to roughly double the size of our domain model from 68 objects to
over 150. The current legacy code was getting difficult to extend due to
the extensive use of embedded SQL statements throughout the code. The complexity
and need for heavy transaction processing led us to consider the EJB architecture
and J2EE servers. The problem with most EJB servers was limited support
for complex data models, particularly in 1999 when we started this project.
That led us to O-R mapping tools and VBSF.
With the addition of O-R mapping we have been able
to minimize the number of entity beans. Each entity bean represents a top
level domain object such as customer, ad, contract, etc. Almost all entity
beans in AdPro represent a complex graph of objects. The graph consists
of references to other entity beans and many owned references and collections.
In some cases the maximum path consists of five edges.
Reducing the number of beans would not be useful
unless good control over the loading of referenced collections was available.
VBSF gives us wonderful control over the loading and updating of referenced
objects. We are able to load objects only when needed, which significantly
improves performance.
VBSF gave us the power of container managed persistence
with complex data long before the EJB 2.0 specification. In addition, it’s
given us the portability to move our application from one application server
to another as the market has matured.
The Architecture:
VBSF is used to provide persistence for the data in
the bean-managed persistence (BMP) entity beans. This is accomplished with
the aid of an abstract entity bean from which all other entity beans are
derived. The code in the abstract bean handles lazy loading of collections
and synchronizing of changes made by the client to the object graph. By
using the mapping schema information available from VBSF and Java introspection,
the loading and storing the entity data (ejbLoad and ejbStore) is entirely
handled in the generic entity class. Hence derived entity classes only
need to deal with business logic, not persistence logic.
Example entity bean and data class
All the persistent data is stored in a value object (ProductData in illustration). The value object is persisted by VBSF and
is serializable so that it can be a valid RMI or IIOP parameter or return
type. The value objects are mapped by VBSF to the database. The data can
often be loaded by VBSF, processed by the enterprise beans, then sent directly
to the client — avoiding intermediate copies.
AdPro has a large number of reports. As mentioned
in many articles about EJB, it is unwise to use entity beans to generate
reports. It is usually better to generate the data for reports directly
from database queries. All search result lists and formatted reports use
a basic stateless session bean type we call List beans. The list beans
use VBSF’s extensive query capabilities to generate all our report data.
Further Information
Eclipse Services Home Page
Return to
Objectmatter's Customers Page |