212
CHAPTER 10
C
REATING
DATABASE
ACCESS
GENERATORS
10.5.13 Generators for J2EE
Here are some generators that build classes and interfaces for the J2EE architecture:
• sql2java creates Java classes that map to a database schema (http://
sql2java.sourceforge.net/).
• Jenerator is a generator for J2EE (www.visioncodified.com).
• AndroMDA is a model-driven generator that builds EJBs, Struts, deployment
descriptors, and database code (http://andromda.sourceforge.net/). AndroMDA
is the successor to UML2EJB. AndroMDA is designed to conform to the Object
Management’s model-driven architecture (MDA) standard. This is a standard for
code generation from UML. 
• EJBGen 2.0 generates EJBs from an XML description (http://sourceforge.net/
projects/ejbgen/).
• Jaxor uses XML as a definition file format to create plain old Java objects (POJOs)
for database access (http://jaxor.sourceforge.net/features.htm).
• JBossDruid creates EJB/CMP beans from a database physical schema (http://
jbossdruid.sourceforge.net). 
• ArcStyler (www.arcstyler.com) from IO is an application-building generator that
handles database access as part of its role. ArcStyler is an MDA generator that
builds Java code from UML. 
10.6
T
ECHNIQUE
GENERATING
JDBC
Before EJB arrived, Java developers were using a three-tier architecture based on JSP
and JDBC, where the JDBC code was wrapped in plain old Java objects (POJOs). This
technique is still valuable, and we’ve included a generator architecture to provide an
alternative to database access with Java using EJB.
In this section, we describe the List/Entity architecture shown in Figure 10.9. We
used this architecture with the database generators in the sections that follow. The
List/Entity architecture is a simplified database architecture that uses two classes for
access to each table as opposed to five with EJB.
10.6.1
Roles of the generator
As with the case study generator, it is important to first declare in a straightforward
manner what the generator will and will not do. Let’s start with what the generator
will handle:
• All database operations, including all UPDATE, INSERT, and DELETE statements.
• All queries against the database.
• The physical schema of the database.
• Any stored procedures used to implement the database operations or queries.
• Testing pages to support the testing of the database access layer.
.Pdf printing in thumbnail size - Compress reduce PDF size in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
C# Code & .NET API to Compress & Decompress PDF Document
can pdf files be compressed; change page size pdf acrobat
.Pdf printing in thumbnail size - VB.NET PDF File Compress Library: Compress reduce PDF size in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
VB.NET PDF Document Compression and Decompression Control SDK
change file size of pdf document; change font size in pdf form
T
ECHNIQUE
GENERATING
JDBC
213
The generator will not handle the following:
• The business logic, which will be handled by a layer above the database access layer.
• Storage of any preferences associated with a single session with the application
interface.
• Export of the data to other systems, or import of data from other systems (this
code will make extensive use of the database code).
• The user interface validations or the workflow patterns for usability.
With this list of responsibilities in hand, you can now determine the architecture of
the generator.
10.6.2
Laying out the generator architecture
The architecture is three-tiered, just as in the EJB example: the user interface talks to a
business logic layer, which in turn talks to the database access layer, which performs the
persistence role. The test pages talk directly to the database access layer. The sample
data loader also uses the database access layer. The database is initialized via a generated
database definition.
Figure 10.9 shows a high-level architecture for a web server that uses persistence
based on direct connectivity with JDBC. The difference between this model and the
J2EE model in the case study is the structure of the database access layer. Instead of
having five classes (and two interfaces) to represent a single entity within the database,
you have two: entity and list.
The Entity/List model
From the client perspective, there are two main use cases. The first we will call entity
access. In this case, we want to create, update, or delete a single record in the database.
The second case we’ll call list access. This time we’ll make a query against the database,
which will return a large block of structured data.
UserInterface
(Apache/Tomcat)
BusinessLogic
(JavaClasses)
DatabaseAccess
TestPages
(JSP)
Database
DatabaseDefinition
(SQL)
SampleDataLoader
(Java)
Entities
(Java)
Lists
(Java)
JDBC
Figure 10.9
The JDBC web application architecture
Create Thumbnail Winforms | Online Tutorials
For information about saving & printing images in Create Thumbnail; Generate Barcodes on Your Documents; Read Processing; RasterEdge OCR Engine; PDF Reading; Encode
adjust size of pdf file; pdf markup text size
VB.NET Image: Visual Basic .NET Guide to Draw Text on Image in .
can adjust the text font, font size, font type System.IO Imports System.Drawing.Printing Imports RasterEdge & profession imaging controls, PDF document, image
change font size in pdf comment box; pdf form change font size
214
CHAPTER 10
C
REATING
DATABASE
ACCESS
GENERATORS
Using the database from the case study, the entity access path is ideal for adding Book
records or editing a Publisher record. You’ll use list access when you’re presenting a list
or a report, such as a list of all of the publishers.
You provide access to entities by creating a single Entity class for each entity in
the database (e.g., Book, Author, Publisher). The Entity class has two constructors.
The basic constructor creates an empty Entity object with only default values. The
other constructor takes a primary key and constructs the Entity object using the
data for that primary key in the database. The Entity has set and get methods
for each field, as well as an update method, which either creates or updates an object
depending on whether it already exists in the database.
The List class implements the list access path. This object is a library, and each
of its methods is a static method that performs a query. The result of each query can
be one of the options shown here:
• A single value—An example is querying for the user ID from a user login name.
• An array of single values—An example is returning the user IDs from all of the
users whose name matches a given criterion.
• A single hash table—This is used when the query is designed to get back a single
structured response. An example is a query that gets all of the user information
for a single user ID.
• An array of hash tables—This is used for reporting. An example is a query that
returns all of the user information for all of the users matching a particular name.
The generator should either choose the correct result type for a given query or allow the
engineer to define the return type manually.
As with the case study architecture, the input in this generator is a schema defini-
tion. The outputs are the Entity and List classes as well as the schema for the data-
Generator
Schema Definition
File
List
Class
Schema
List Test
Page
List and Entity Classes
Initialization
SQL
EntityTest
Page
JSP Test Pages
Data Loader
Business Logic
Definition File
Sample Data
Entity
Class
Sample Data
Loader
Production JSP Pages
DB
JDBC
Figure 10.10 0 A generator that builds the database 
layer portion of a JDBC application architecture
XImage.Raster for .NET, Comprehensive .NET RasterImage SDK
resolution printing; More about Image Saving & Printing Create thumbnail directly in image. provide powerful & profession imaging controls, PDF document, image
change file size of pdf; adjust pdf size preview
VB.NET Image: How to Create Visual Basic .NET Windows Image Viewer
image, rotating and flipping an image, printing & saving including png, jpeg, gif, tiff, bmp, PDF, and Word You can accurately define the size and location of
batch pdf compression; change paper size in pdf
T
ECHNIQUE
GENERATING
DATABASE
ACCESS
LAYERS
FOR
ASP
215
base, the database loader, and the test pages. The generator for this architecture is
shown in Figure 10.10.
Now let’s step through the processes that this generator performs.
10.6.3
Processing flow 
Here are the steps that the JDBC generator follows:
Reads in the definition file and stores it locally.
Creates the schema SQL file based on the definition file.
Creates the sample data loader, which uses SQL to load data into the database.
For each entity, follows these steps:
Creates the entity Java file.
Creates the test pages for the Entity class.
For each list follows these steps:
Initializes a cache of methods.
For each query:
Decides the return type and invokes the proper template, and then adds the 
output to the method cache.
Creates the test page for this query.
Creates the List class Java with the method cache.
10.6.4
JDBC developer resources
Here are some resources for JDBC development:
• Sun’s official JDBC page (http://java.sun.com/products/jdbc/) contains the
JDBC API documentation and other JDBC-related resources. 
• Java Server Pages, 2nd Edition, by Hans Bergsten (O’Reilly, 2002), is an excellent
book on JSP development. 
• Database Programming with JDBC and Java, Second Edition, by George Reese
(O’Reilly, 2000), covers using the JDBC interface within Java.
10.7
T
ECHNIQUE
GENERATING
DATABASE
ACCESS
LAYERS
FOR
ASP
Active Server Pages (ASP) was Microsoft’s first web application server model. The
basics of the model are fairly simple. IIS, Microsoft’s web server, runs ASP pages, which
in turn call COM objects written in either Visual Basic or C++ to read and persist data
from the database. This section discusses the architecture for an ASP generator.
JDBC generator
VB.NET Image: How to Draw Annotation on Doc Images with Image SDK
and bmp) or documents (like multi-page TIFF, Microsoft Office Word and PDF file You can freely control the annotation shapes, the outline size (width and height
change font size fillable pdf; optimize scanned pdf
VB.NET Image: VB.NET Code to Create Watermark on Images in .NET
font type "Times New Roman", size "16", and style System.IO Imports System.Drawing. Printing Imports RasterEdge & profession imaging controls, PDF document, tiff
pdf page size limit; change font size pdf fillable form
216
CHAPTER 10
C
REATING
DATABASE
ACCESS
GENERATORS
10.7.1
Roles of the generator
The roles of this generator are the same as those of the JDBC generator described in
section 10.6.1.
10.7.2
Laying out the generator architecture
Our recommended ASP architecture is similar to the JDBC model, but we’ve changed
the names of the components. We are using IIS instead of Apache and ASP instead of
Tomcat and JSP. On the back end, we are using ODBC instead of JDBC. Figure 10.11
shows the high-level architecture.
The architecture of the database access layer follows the Entity/List model
described earlier in section 10.6.
The design of the tier generator is shown in Figure 10.12. The generator creates
a set of database COM controls and ASP pages from an abstract definition of the code
that will be generated.
UserInterface
(IIS/ASP)
BusinessLogic
(COM)
DatabaseAccess
TestPages
(ASP)
Database
DatabaseDefinition
(SQL)
SampleDataLoader
(VB/C++)
Entities
(COM)
Lists
(COM)
ODBC
Figure 10.11
The ASP web application architecture
Generator
Schema Definition
File
List
Class
Schema
ListTest
Page
List and Entity COM
Controls
Initialization
SQL
Entity Test
Page
ASP Test Pages
Data Loader
Business Logic
Definition File
Sample Data
Entity
Class
Sample Data
Loader
Production ASP Pages
DB
ODBC
Figure 10.12 2 A generator that builds the database 
access code for an ASP application architecture
C# Image: How to Draw Text on Images within Rasteredge .NET Image
such as adjusting text font size, color, style and System.IO; using System.Drawing. Printing; using RasterEdge & profession imaging controls, PDF document, tiff
batch reduce pdf file size; change font size pdf comment box
VB.NET Image: How to Create New Images Using VB.NET Codes in .NET
the complete VB.NET sample codes for printing a high settings like image color and size according to powerful & profession imaging controls, PDF document, tiff
pdf page size dimensions; change font size pdf
T
ECHNIQUE
GENERATING
DATABASE
ACCESS
LAYERS
FOR
ASP
217
Using templates, the generator turns a schema definition into these outputs:
• A set of List and Entity classes that wrap the database schema
• A schema definition suitable for use by the database
• A data loader that uses the Entity classes to populate the database with the test data
• Test pages that layer on top of the List and Entity classes to expose the interface
This generator can work with either C++ or VB as the COM control language. In this
section, we refer to the controls as simple COM controls or COM classes.
10.7.3
Processing flow 
The generator follows these steps:
Reads in the definition file and stores it locally.
Creates the schema SQL file based on the definition file.
Creates the sample data loader, which uses SQL to load data into the database.
For each entity follows these steps:
Creates the Entity COM class.
Creates the test ASP pages for the Entity COM class.
For each list follows these steps:
Initializes a cache of methods.
For each query:
Decides the return type and invokes the proper template, then adds the 
output to the method cache.
Creates the test page for this query.
Creates the List COM class with the method cache.
10.7.4
ASP developer resources
Here are some important resources for ASP developers:
• You’ll find the original Duwamish online application architecture at http://
msdn.microsoft.com/library/default.asp?url=/library/en-us/dnduwon/html/
d5ntierarch.asp. 
• ASP in a Nutshell, 2nd Edition: A Desktop Quick Reference, by A. Keyton Weiss-
inger (O’Reilly, 2000), examines the building of ASP pages for IIS. 
• Developing ASP Components, 2nd Edition, by Shelley Powers (O’Reilly, 2001),
discusses the development of COM components for IIS.
ASP generator
VB.NET Image: Web Image and Document Viewer Creation & Design
document pages with zero footprint and thumbnail preview support Basic project is capable of printing current image toolkit to print bitonal images, PDF, and so
pdf files optimized; reader pdf reduce file size
VB.NET Image: Compress & Decompress Document Image; RasterEdge .
System.IO Imports System.Drawing.Printing Imports RasterEdge decompressing: reduce Word document size according to Scanned PDF encoding and decoding: compress a
pdf compress; adjust size of pdf in preview
218
CHAPTER 10
C
REATING
DATABASE
ACCESS
GENERATORS
10.8
T
ECHNIQUE
GENERATING
DATABASE
ACCESS
LAYERS
FOR
ASP.NET
ASP.NET is Microsoft’s update to its web application server platform, ASP. It is similar
to ASP, but there is a new page layer—ASP.NET—as well as a business logic model
called “code-behind.” Microsoft has also included a new database access technology
called ADO.NET, and a new programming language, named C#, that is a program-
ming model similar to Java. Components, now called assemblies, can be built in a
number of languages including VB.NET, C++, J#, and C#.
In this section, we describe the architecture for an ASP.NET generator.
10.8.1
Roles of the generator
The roles of this generator are the same as those of the JDBC generator described in
section 10.6.1.
10.8.2
Recommended architecture
Figure 10.13 shows a three-tier web application architecture built using Microsoft’s
.NET toolkit. This architecture is very similar to the ASP architecture. The key differ-
ence is the addition of a SOAP access point as a peer to the user interface. The SOAP
layer acts as the web services entry point.
The SOAP layer provides Remote Procedure Call (RPC) access to the database access
layer, so the adventuresome engineer might want to consider using the SOAP layer as a
data loader, providing an end-to-end test of the entire technology stack.
The database access layer will use the Entity/List model presented in section 10.6.
10.8.3
Laying out the generator architecture
The generator takes the schema definition, business logic definitions, and sample data
as input and uses a set of templates, much like our case study, to generate the entity
and list assemblies as well as the schema, the data loader, and a set of ASP.NET test
UserInterface
(IIS/ASP.NET)
BusinessLogic
(Code-behind.aspx)
DatabaseAccess
TestPages
(ASP.NET)
Database
DatabaseDefinition
(SQL)
SampleDataLoader
(VB/C#)
Entities
(COM)
Lists
(COM)
ADO.NET
SOAPInterface
(IIS/.asmx)
Figure 10.13
The ASP.NET web application architecture
T
ECHNIQUE
GENERATING
DATABASE
ACCESS
LAYERS
FOR
ASP.NET
219
pages that test access to the database access layer. Figure 10.14 shows the tier generator
for this model.
Assemblies can be built in a variety of languages. This generator architecture
assumes no particular language for assembly construction.
10.8.4
Processing flow 
The generator follows these steps:
Reads in the definition file and stores it locally.
Creates the schema SQL file based on the definition file.
Creates the sample data loader, which uses SQL to load data into the database.
For each entity follows these steps:
Creates the entity assembly.
Creates the test ASP.NET pages for the entity assembly.
For each list follows these steps:
Initializes a cache of methods.
For each query:
Decides the return type and invokes the proper template, adds the output to 
the methods cache.
Creates the test ASP.NET page for this query.
Creates the list assembly with the method cache.
Generator
Schema Definition
File
List
Class
Schema
List Test
Page
List and Entity
Assemblies
Initialization
SQL
Entity Test
Page
ASP.NET Test Pages
Data Loader
Business Logic
Definition File
Sample Data
Entity
Class
Sample Data
Loader
Production ASP.NET
Pages
DB
ADODB
Figure 10.14 4 The generator for the database 
layer of an ASP.NET application architecture
ASP.NET generator
220
CHAPTER 10
C
REATING
DATABASE
ACCESS
GENERATORS
10.8.5
ASP.NET developer resources
Here are some important ASP.NET resources:
• The ADO.NET architecture guide (http://msdn.microsoft.com/library/
default.asp?url=/library/en-us/dnbda/html/daag.asp) discusses the proper use of
the ADO architecture. 
• The .NET architecture roadmap (http://msdn.microsoft.com/library/default.-
asp?url=/library/en-us/dnbda/html/distapp.asp) provides a high-level view of
Microsoft’s design for applications based on .NET. 
• The Duwamish online application architecture for ASP.NET (http://
msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/bdasam-
pduwam7.asp) is an example application built using the .NET framework. 
• ADO.NET Programming, by Arlen Feldman (Manning, 2002), covers program-
ming to Microsoft’s ADO standard. 
• ASP.NET in a Nutshell, by G. Andrew Duthie and Matthew MacDonald (O’Reilly,
2002), examines building web pages with Microsoft’s ASP.NET technology.
• Programming C#, 2nd Edition, by Jesse Liberty (O’Reilly, 2002), explores the C#
programming language.
• Programming .NET Web Services, by Alex Ferrara and Matthew MacDonald
(O’Reilly, 2002), discusses adding SOAP interface layers to .NET web applications.
10.8.6
Generators for .NET
The following are resources for ASP developers:
• C# Data Tier Generator builds SQL and C# from a database (http://
csharpdatatier.sourceforge.net). 
• DeKlarit (www.deklarit.com) is a commercial product that builds database access
and user interface code for C# and the .NET framework.
10.9
T
ECHNIQUE
: G
ENERATING
DATABASE
ACCESS
CLASSES
FOR
P
ERL
DBI
Perl has been used to build dynamic web sites since the introduction of CGI. Both
Amazon and Yahoo! have used Perl on their web servers. An Apache server using
mod_perl to run Perl in-process with the server can be as efficient as .NET or J2EE.
In this section, we examine the architecture for a generator that builds a Perl DBI
database access layer and its ancillary files.
10.9.1
Roles of the generator
The roles of this generator are the same as those of the JDBC generator described in
section 10.6.1.
T
ECHNIQUE
: G
ENERATING
DATABASE
ACCESS
CLASSES
FOR
P
ERL
DBI
221
10.9.2
Laying out the generator architecture
Our Perl application server uses an all open source technology stack. Figure 10.15
shows a block diagram for the three-tier architecture.
The three main entry points to this application server are:
• The HTML user interface, which runs on Apache and uses HTML::Mason as
the page markup language. This layer talks to the business logic layer.
• The SOAP layer that is built using the SOAP::Lite module from CPAN. This
layer talks to the business logic layer.
• A set of database access test pages, which also use HTML::Mason as the page
markup language. This layer talks to the database access layer and is generated
along with the database access classes.
The database access layer follows the Entity/List architecture. Entities and lists are built
as Perl classes. These classes use Perl’s DBI layer to run operations and queries against
the database.
UserInterface
(Apache/HTML::Mason)
BusinessLogic
(Perl)
DatabaseAccess
TestPages
(HTML::Mason)
Database
DatabaseDefinition
(SQL)
SampleDataLoader
(Perl)
Entities
(Perl)
Lists
(Perl)
DBI
SOAPInterface
(SOAP::Lite)
Figure 10.15
Perl web application architecture
Generator
Schema Definition
File
List
Class
Schema
List Test
Page
List and Entity Classes
Initialization
SQL
Entity Test
Page
HTML::Mason Test
Pages
Data Loader
Business Logic
Definition File
Sample Data
Entity
Class
Sample Data
Loader
Production
HTML::Mason Pages
DB
DBI
Figure 10.16 6 A generator that builds 
the database access layer of a Perl web 
application architecture
Documents you may be interested
Documents you may be interested