WO1999032996A1 - Integrating both modifications to an object model and modifications to a database into source code by an object-relational mapping tool - Google Patents

Integrating both modifications to an object model and modifications to a database into source code by an object-relational mapping tool Download PDF

Info

Publication number
WO1999032996A1
WO1999032996A1 PCT/US1998/027187 US9827187W WO9932996A1 WO 1999032996 A1 WO1999032996 A1 WO 1999032996A1 US 9827187 W US9827187 W US 9827187W WO 9932996 A1 WO9932996 A1 WO 9932996A1
Authority
WO
WIPO (PCT)
Prior art keywords
database
data
object model
modifications
creating
Prior art date
Application number
PCT/US1998/027187
Other languages
French (fr)
Inventor
Tony Chun Tung Ng
Timothy R. Learmont
Original Assignee
Tony Chun Tung Ng
Learmont Timothy R
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tony Chun Tung Ng, Learmont Timothy R filed Critical Tony Chun Tung Ng
Priority to AU22024/99A priority Critical patent/AU2202499A/en
Priority to JP2000525832A priority patent/JP2003517650A/en
Priority to DE69823388T priority patent/DE69823388D1/en
Priority to EP98966033A priority patent/EP1042721B1/en
Publication of WO1999032996A1 publication Critical patent/WO1999032996A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/252Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • G06F9/4493Object persistence
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99932Access augmentation or optimizing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99944Object-oriented database structure
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99944Object-oriented database structure
    • Y10S707/99945Object-oriented database structure processing

Definitions

  • the present invention relates generally to data processing systems and, more particularly,
  • a relational database stores data in tables having rows
  • Each table may
  • a primary key comprising one or more columns that uniquely identify a row.
  • a primary key comprising one or more columns that uniquely identify a row.
  • a column storing each customer's social security number may
  • a table may
  • customer in the customer table with one or more orders (or rows) in the order table.
  • Object-relational mapping tools read database schema information and automatically
  • This source code contains a number of classes whose
  • interrelationships reflect the logical structure, or schema, of the database.
  • a class such as a
  • JavaTM class is a data structure containing both data members that store data and function
  • the source code may contain one class for each
  • each class may have a data member for each column in the corresponding table. Additionally, the classes contain function members that are used to both get
  • the programmer writes code to interact with only the classes in the source code and not
  • mapping tools are of little help in such situations. These tools can only remap the
  • Figure 1 depicts a data processing system suitable for practicing methods and systems
  • Figure 2 depicts a more detailed diagram ofthe database depicted in Figure 1;
  • Figure 3 depicts a database data structure reflecting the schema ofthe database depicted
  • Figure 4A depicts an object model containing information derived from the database data
  • Figure 4B depicts source code generated from the object model depicted in Figure 4 A;
  • Figure 5 depicts a flowchart ofthe states performed by the object-relational mapping tool
  • Figure 6 depicts an updated version ofthe database depicted in Figure 1;
  • Figure 7 depicts a database data structure reflecting the schema ofthe updated database
  • Figure 8 A depicts an object model based on the database data structure depicted in Figure
  • Figure 8B depicts source code generated based upon the object model depicted in Figure
  • Figure 9 depicts a flowchart ofthe states performed by the object-relational mapping tool
  • Figure 10 depicts a flowchart ofthe states performed by the object-relational mapping tool
  • Figures 11A and 1 IB depict a flowchart ofthe states performed by the object-relational
  • mapping tool depicted in Figure 1 to update the object model based on updates to the database
  • Figure 12 depicts a flowchart ofthe states performed by the object-relational mapping tool
  • This method creates a second data structure reflecting a modified
  • method receives customizations into the object model, receives an indication that the data source
  • a secondary storage device comprising a secondary storage device, a memory, and a processor.
  • secondary storage device contains a database having a logical structure comprising tables with
  • the memory contains a first database data structure reflecting the logical
  • the memory contains an object-relational mapping tool configured to
  • the processor is configured to run the object-relational mapping
  • relational mapping tool that integrates both customizations to source code and modifications to
  • improved object-relational mapping tool maps a database by first querying the database to
  • the programmer may add
  • the database administrator may likewise make a change to the database schema (e.g., add a
  • Figure 1 depicts a data processing system 100 suitable for practicing methods
  • Data processing system 100 includes computer
  • Computer 101 connected to the Internet 102.
  • Computer 101 includes memory 104, secondary storage
  • CPU central processing unit
  • input device 110 input device 110
  • Memory 104 includes an object-relational mapping tool 114 (ORMT) in accordance with
  • mapping tool 114 includes object model 116 and database data structure 115, reflecting the
  • storage device 106 is source code 120, containing classes reflecting the schema of database 118
  • computer 101 may be connected to the Internet 102, computer 101 may be connected
  • computer-readable media such as secondary storage devices, like hard disks, floppy disks, or
  • database 118 and source code 120 may be stored on or
  • Object-relational mapping tool 114 reads database 118 to examine its schema, constructs
  • database data structure 115 to reflect this schema, generates an object model 116 based on
  • the programmer may add a new method, rename a field (and
  • Figure 2 depicts a more detailed diagram of an example of database 118, containing a
  • the customer table 202 includes a customer ID
  • the customer ID column 206 serves as the primary key
  • the order table 204 includes order ID column 212, date column 214,
  • the order ID column 212 serves as the primary key for the order
  • Customer ID column 216 is the foreign key to customer ID column 206, meaning
  • customer ID column 216 refers to the customer ID column 206 in one or more rows.
  • database data structure 115 represents the schema of database 118.
  • relational mapping tool 114 creates database data structure 115 by querying database 118 to
  • database data structure 115 appears as shown in Figure 3 and includes an object 302,
  • object 302 is
  • each element ofthe list is an
  • index object containing an indication ofthe type of index (e.g., primary, non-unique, .and unique)
  • Object 302 also contains a hash table 310, where
  • each entry in the hash table is a column object 312, 314 containing data for a particular field
  • Object 304 contains similar information, including a list
  • the programmer may customize the object
  • the programmer may rename the name field to SSN and may subsequently
  • the generated by the object-relational mapping tool contains the programmer's customization (e.g.,
  • Object model 116 contains objects 400 and 401,
  • Object 400 contains information for the customer table 202, including a list 402 of
  • relationship object 403 links a field in object 400 with a field in object 401
  • object 400 contains a hash table 404 with an entry 406, 408 for each field in customer table 202, each entry containing the name and type of the field.
  • object 401 contains information for order table 204, including a list 410 of relationship
  • object model 116 contains all of the
  • Figure 4B depicts source code file 116 with the JavaTM programming language
  • Class 420 reflects customer table 202 and class 424
  • class 420 contains a data member for customer ID, social
  • Class 420 also contains a number of methods to
  • Class 424 includes data members order ID and date and
  • class 424 contains a field, Customer_for_Order, implementing the foreign key with
  • the object-relational mapping tool When a foreign key is contained in the object model, the object-relational mapping tool
  • the class representing the referring table is defined to have a member that
  • selection refers to a type
  • Figure 5 depicts a flowchart ofthe states performed by the object-relational mapping tool
  • Figure 6 illustrates that the database administrator has added address column 602 to the
  • mapping tool is to import the database schema (state 502). In this state, importation of the
  • JDBC JavaTM application
  • API program interface
  • JDBC Java API
  • data structure 700 depicted in Figure 7, reflects the addition
  • customer object 702 are similar to those described with reference to Figure 4.
  • the object-relational mapping tool compares the two database data structures 115
  • the object-relational mapping tool updates object model 116
  • Figure 8 A depicts object model 116 after
  • name field 408 remains changed to the social security
  • mapping tool has incorporated the database changes into the object model without disturbing the
  • Figure 9 depicts a flowchart ofthe states performed when importing the database schema.
  • the object-relational mapping tool utilizes a number of methods which are found on the
  • the first state performed by the object-relational mapping tool is to call the GetTable method ofthe JDBC interface, which returns a description o the
  • mapping tool selects one ofthe tables (state 904) and invokes the GetColumns method on the
  • object-relational mapping tool invokes the GetPrimaryKeys method to receive the primary key
  • the object-relational mapping tool determines if there are
  • the object-relational mapping tool constructs a database data structure, like the one shown in
  • Figure 10 depicts a flowchart ofthe states performed by the object-relational mapping
  • mapping tool compares all the tables between the two database data structures (state 1002).
  • the object-relational mapping tool compares the objects representing the tables and
  • relational mapping tool compares the primary keys for each table to determine if a different key
  • Figures 11 A and 1 IB depict a flowchart ofthe states performed by the object-relational
  • mapping tool when updating the object model.
  • the object-relational mapping tool when updating the object model.
  • the object-relational mapping tool is to determine if the changes include the addition of a new
  • object model to represent that table (state 1104). If not, the object-relational mapping tool
  • object-relational mapping tool adds an entry to the hash table representative of that column (state
  • the object-relational mapping tool determines if a new foreign key has been added
  • mapping tool adds to the list of relationship objects a new relationship object indicating the new
  • the object-relational mapping tool determines if
  • relational mapping tool determines if a column has been deleted (state 1118), and if so, the
  • object-relational mapping tool deletes the corresponding entry in the hash table (state 1120).
  • the object-relational mapping tool determines
  • the object-relational mapping tool removes from the list the relationship object that designates
  • the object- relational mapping tool determines if a change to a column attribute has been made (state 1126).
  • the object-relational mapping tool updates the
  • relational mapping tool deletes the corresponding relationship object and adds a new relationship
  • Figure 12 depicts a flowchart ofthe states performed by the object-relational mapping
  • the first state performed by the object-relational mapping tool is to select an object
  • mapping tool then creates a class for the table object, storing the class definition into the source
  • the object-relational mapping tool adds function members to both get and set the
  • relational mapping tool adds relationships into the class, where these relationships reflect foreign
  • the object-relational mapping tool determines if there is
  • object model contains both the database modifications and the object model modifications

Abstract

In accordance with methods and systems consistent with the present invention, an improved object-relational mapping tool is provided that generates source code containing classes which preserve both changes to the database schema as well as customizations to a preexisting version of the classes. This functionality alleviates the programmer from having to recreate their changes to the classes when the database changes, thus saving significant development time over conventional systems.

Description

INTEGRATING BOTH MODIFICATIONS TO AN OBJECT MODEL AND MODIFICATIONS TO A DATABASE INTO SOURCE CODE BY AN OBJECT-RELATIONAL MAPPING TOOL
RELATED APPLICATIONS
The following identified U.S. patent applications are relied upon and are incorporated by
reference in this application.
Provisional U.S. Patent Application No. 60/068,415, entitled "System and Method for
Mapping Between Objects and Databases," filed on December 22, 1997.
U.S. Patent Application No. , entitled "Object-Relational Mapping Tool That
Processes Views," bearing attorney docket no. 06502.0136-00000, and filed on the same date
herewith.
U.S. Patent Application No. , entitled "Evolution of Object-Relational
Mapping Through Source Code Merging," bearing attorney docket no. 06502.0137-00000, and
filed on the same date herewith.
U.S. Patent Application No. , entitled "Rule-Based Approach to
Object-Relational Mapping Strategies," bearing attorney docket no. 06502.0139-00000, and filed
on the same date herewith.
U.S. Patent Application No. , entitled "User Interface for the Specification of
Lock Groups," bearing attorney docket no. 06502.0142-00000, and filed on the same date
herewith.
U.S. Patent Application No. , entitled "A Fine-Grained Consistency
Mechanism for Optimistic Concurrency Control Using Lock Groups," bearing attorney docket no.
06502.0143-00000, and filed on the same date herewith.
U.S. Patent Application No. , entitled "User Interface for the Specification of
Index Groups Over Classes," bearing attorney docket no. 06502.0144-00000, and filed on the same date herewith. U.S. Patent Application No. , entitled "Method and Apparatus for Creating
Indexes in a Relational Database Corresponding to Classes in an Object-Oriented Application,",
bearing attorney docket no. 06502.0145-00000, and filed on the same date herewith.
U.S. Patent Application No. , entitled "Method and Apparatus for Loading
Stored Procedures in a Database Corresponding to Object-Oriented Data Dependencies," bearing
attorney docket no. 06502.0146-00000, and filed on the same date herewith.
U.S. Patent Application No. , entitled "An Integrated Graphical User Interface
Method and Apparatus for Mapping between Objects and Databases," bearing attorney docket no.
06502.0147-00000, and filed on the same date herewith.
U.S. Patent Application No. , entitled "Methods and Apparatus for Efficiently
Splitting Query Execution Across Client and Server in an Object-Relational Mapping," bearing
attorney docket no. 06502.0148-00000, and filed on the same date herewith.
Field ofthe Invention
The present invention relates generally to data processing systems and, more particularly,
to integrating both modifications to an object model and modifications to a database into source
code by an object-relational mapping tool.
Background ofthe Invention
Object-relational mapping tools have been created to facilitate development of application
programs that utilize a relational database. A relational database stores data in tables having rows
(records) and columns (fields). The tables are usually interrelated, and thus, there is a logical
structure imposed on the database. This logical structure is known as a schema. Each table may
have a primary key, comprising one or more columns that uniquely identify a row. For example,
in a table with rows of customers, a column storing each customer's social security number may
be used as the primary key because it uniquely identifies each customer in the table. A table may
also have one or more foreign keys, associating a row in one table to one or more rows in another
table. For example, where one table contains customer information and another table contains
order information for the customers, a foreign key may exist in the order table to relate one
customer (or row) in the customer table with one or more orders (or rows) in the order table.
Object-relational mapping tools read database schema information and automatically
generate source code from the database. This source code contains a number of classes whose
interrelationships reflect the logical structure, or schema, of the database. A class, such as a
Java™ class, is a data structure containing both data members that store data and function
members (or methods) that act upon the data. The source code may contain one class for each
table in the database, and each class may have a data member for each column in the corresponding table. Additionally, the classes contain function members that are used to both get
and set the values for the data members and, eventually, update the database.
By using an object-relational mapping tool, a programmer can automatically generate
source code to facilitate their database application development. After the source code is
generated, the programmer writes code to interact with only the classes in the source code and not
the database, thus hiding the complexities of interacting with the database from the programmer.
This allows a programmer who is familiar with object-oriented programming to code against
familiar classes and not unfamiliar, sometimes cumbersome to use, database query languages.
Although beneficial to programmers, conventional object-relational mapping tools suffer
from a limitation. When a programmer runs the object-relational mapping tool, it generates
source code with classes that reflect the structure ofthe database at that time. However, during
the lifetime ofthe database, it is common for a database administrator to change the schema of
the database (e.g., add a new field or table). Likewise, it is common for the programmer to update
the classes in the source code (e.g., change a field name or delete a field). As such, both the
classes and the database tend to evolve and change over time. Conventional object-relational
mapping tools, however, are of little help in such situations. These tools can only remap the
database to generate classes that contain the database modifications, but which do not contain the
programmer's modifications. Therefore, the programmer's changes are lost and must be manually
recreated, thus wasting significant development time. It is therefore desirable to improve object-
relational mapping tools. Brief Description ofthe Drawings
The accompanying drawings, which are incorporated in and constitute a part of this
specification, illustrate an implementation of the invention and, together with the description,
serve to explain the advantages and principles ofthe invention. In the drawings,
Figure 1 depicts a data processing system suitable for practicing methods and systems
consistent with the present invention;
Figure 2 depicts a more detailed diagram ofthe database depicted in Figure 1;
Figure 3 depicts a database data structure reflecting the schema ofthe database depicted
in Figure 1 ;
Figure 4A depicts an object model containing information derived from the database data
structure depicted in Figure 3;
Figure 4B depicts source code generated from the object model depicted in Figure 4 A;
Figure 5 depicts a flowchart ofthe states performed by the object-relational mapping tool
depicted in Figure 1 ;
Figure 6 depicts an updated version ofthe database depicted in Figure 1;
Figure 7 depicts a database data structure reflecting the schema ofthe updated database
depicted in Figure 6;
Figure 8 A depicts an object model based on the database data structure depicted in Figure
7;
Figure 8B depicts source code generated based upon the object model depicted in Figure
8A;
Figure 9 depicts a flowchart ofthe states performed by the object-relational mapping tool
depicted in Figure 1 when importing the schema from the database depicted in Figure 6; Figure 10 depicts a flowchart ofthe states performed by the object-relational mapping tool
depicted in Figure 1 to isolate changes made to the database depicted in Figure 6;
Figures 11A and 1 IB depict a flowchart ofthe states performed by the object-relational
mapping tool depicted in Figure 1 to update the object model based on updates to the database
depicted in Figure 6; and
Figure 12 depicts a flowchart ofthe states performed by the object-relational mapping tool
to generate source code based upon the object model after it has been updated in accordance with
the processing depicted in Figures 11 A and 1 IB.
Summary ofthe Invention
In accordance with methods and systems consistent with the present invention, an
improved object-relational mapping tool is provided that generates source code containing
classes which preserve both changes to the database schema as well as customizations to a
preexisting version ofthe classes. This functionality alleviates the programmer from having to
recreate their customizations to the classes when the database changes, thus saving significant
development time over conventional systems.
In accordance with methods consistent with the present invention, a method is provided
in a computer system having a first data structure reflecting a logical structural relationship
among data in a data source. This method creates a second data structure reflecting a modified
version ofthe logical structural relationship among the data in the data source and compares the
first data structure with the second data structure to isolate the modifications made to the logical
structural relationship among the data so that source code can be generated to reflect the
modifications. In accordance with methods consistent with the present invention, a method is provided
in a computer system having an object model reflecting a logical structure of a data source. This
method receives customizations into the object model, receives an indication that the data source
has been modified, and incorporates the modifications into the object model while preserving the
customizations.
In accordance with systems consistent with the present invention, a data processing
system is provided comprising a secondary storage device, a memory, and a processor. The
secondary storage device contains a database having a logical structure comprising tables with
rows and columns. The memory contains a first database data structure reflecting the logical
structure ofthe database and an object model containing objects based on the first database data
structure. Furthermore, the memory contains an object-relational mapping tool configured to
operate after the logical structure ofthe database has been modified, configured to import the
modified logical structure and create a second database data structure based on the modified
logical structure, configured to compare the first and the second database data structures to
isolate the modifications made to the logical structure, .and configured to update the object model
with the isolated modifications. The processor is configured to run the object-relational mapping
tool.
Detailed Description ofthe Invention
Methods and systems consistent with the present invention provide an improved object-
relational mapping tool that integrates both customizations to source code and modifications to
a database. Accordingly, the programmer does not have to recreate their customizations to the source code when the database changes, thus saving significant development time over
conventional systems.
Overview
In accordance with methods and systems consistent with the present invention, the
improved object-relational mapping tool maps a database by first querying the database to
determine its schema and then by creating an internal data structure (known as the "database data
structure") representing that schema. From this data structure, the object-relational mapping tool
creates an object model containing all ofthe information necessary to generate classes and then
creates source code containing a number of Java classes that may be used by a programmer to
interface with the database.
At some point during the lifetime of the object model, the programmer may add
customizations to the object model (e.g., rename a field) that will be reflected in the source code,
.and the database administrator may likewise make a change to the database schema (e.g., add a
column). After the database schema has been changed, the programmer may wish to update their
source code to reflect the schema change while maintaining their customizations. To accomplish
this goal, the object-relational mapping tool, in accordance with methods and systems consistent
with the present invention, imports the new schema, creates a new database data structure, and
compares the original (or preexisting), database data structure with this newly created one, noting
any differences. Having noted the differences, the object-relational mapping tool has isolated
the changes to the schema, and it then incorporates these changes into the existing object model
and generates new source code. As a result, both the programmer's customizations to the object
model (reflected in the old version ofthe source code) as well as the changes to the schema made by the database administrator are integrated into the new source code, thus saving the
programmer significant development time over conventional systems.
Implementations Details
Figure 1 depicts a data processing system 100 suitable for practicing methods and
systems consistent with the present invention. Data processing system 100 includes computer
101 connected to the Internet 102. Computer 101 includes memory 104, secondary storage
device 106, central processing unit (CPU) 108, input device 110, and video display 112.
Memory 104 includes an object-relational mapping tool 114 (ORMT) in accordance with
methods and systems consistent with the present invention. In turn, the object-relational
mapping tool 114 includes object model 116 and database data structure 115, reflecting the
schema of database 118, stored on secondary storage device 106. Also stored on secondary
storage device 106 is source code 120, containing classes reflecting the schema of database 118
and containing any customizations ofthe programmer.
Although computer 101 is depicted with various components, one skilled in the art will
appreciate that this computer can contain additional or different components. Additionally,
although computer 101 is shown connected to the Internet 102, computer 101 may be connected
to other networks, including other wide area networks or local area networks. Furthermore,
although aspects ofthe present invention are described as being stored in memory, one skilled
in the art will appreciate that these aspects can also be stored on or read from other types of
computer-readable media, such as secondary storage devices, like hard disks, floppy disks, or
CD-ROM; a carrier wave from the Internet; or other forms of RAM or ROM. Sun, Sun
Microsystems, the Sun logo, Java™, and Java™-based trademarks are trademarks or registered trademarks of Sun Microsystems, Inc. in the United States and other countries. Still further, one
skilled in the art will appreciate that database 118 and source code 120 may be stored on or
distributed across other devices on the Internet 102.
Object-relational mapping tool 114 reads database 118 to examine its schema, constructs
database data structure 115 to reflect this schema, generates an object model 116 based on
database data structure 115, and then creates source code 120 based on object model 116. It
should be noted that, at the time object model 116 is generated, the object-relational mapping
tool allows the programmer to add customizations, and these customizations will be reflected in
the source code 120. For example, the programmer may add a new method, rename a field (and
use it for a different purpose), change the attributes of a field (e.g., the type or whether it can
accept a null value), or override the mapping of a field. When a field mapping is overridden, that
field will not appear in the source code.
Figure 2 depicts a more detailed diagram of an example of database 118, containing a
customer table 202 and an order table 204. The customer table 202 includes a customer ID
column 206, and a name column 208. The customer ID column 206 serves as the primary key
for the customer table 202. The order table 204 includes order ID column 212, date column 214,
and customer ID column 216. The order ID column 212 serves as the primary key for the order
table 204. Customer ID column 216 is the foreign key to customer ID column 206, meaning
customer ID column 216 refers to the customer ID column 206 in one or more rows. A s
previously stated, database data structure 115 represents the schema of database 118. Object-
relational mapping tool 114 creates database data structure 115 by querying database 118 to
identify its schema and by creating the data structure to reflect the schema. This process is
known as "importing" the database schema and is described in further detail below. Once created, database data structure 115 appears as shown in Figure 3 and includes an object 302,
reflecting the customer table 202, and an object 304, reflecting the order table 204. Object 302
contains a list 306 of foreign key objects, if any, each containing the name ofthe foreign key as
well as an indication of the columns that comprise the foreign key. Additionally, object 302
contains a list 308 ofthe indexes in the customer table 202, where each element ofthe list is an
index object containing an indication ofthe type of index (e.g., primary, non-unique, .and unique)
and a list of columns that comprise the index. Object 302 also contains a hash table 310, where
each entry in the hash table is a column object 312, 314 containing data for a particular field,
including its name, type, and length. Object 304 contains similar information, including a list
of foreign keys 316, a list of indexes 318, and a hash table 320 with column objects 322-326 for
each field or column.
Using the object-relational mapping tool, the programmer may customize the object
model. For example, the programmer may rename the name field to SSN and may subsequently
use this field to store the customer's social security number, in which case the customer's social
security number will be stored in the name field 208 of the database 118. By making such a
customization, it is reflected in the object model 116 shown in Figure 4A. Object model 116,
generated by the object-relational mapping tool, contains the programmer's customization (e.g.,
the name field has been renamed to SSN). Object model 116 contains objects 400 and 401,
representing an intermediate form of the information for a class before it is written as source
code. Object 400 contains information for the customer table 202, including a list 402 of
relationship objects 403, each containing information indicating a relationship (i.e., a foreign
key). For example, relationship object 403 links a field in object 400 with a field in object 401
to which it is linked. Additionally, object 400 contains a hash table 404 with an entry 406, 408 for each field in customer table 202, each entry containing the name and type of the field.
Similarly, object 401 contains information for order table 204, including a list 410 of relationship
objects 411 and a hash table 412 containing entries 414-418 for each field in order table 204.
Although methods and systems consistent with the present invention are described with reference
to specific data structures, such as hash tables, one skilled in the art will appreciate that other data
structures may also be used.
As can be appreciated from this description of object model 116, it contains all of the
information necessary to create the classes in the source code, an example of which is depicted
in Figure 4B. Figure 4B depicts source code file 116 with the Java™ programming language
representation of objects 400 and 401. Class 420 reflects customer table 202 and class 424
reflects order table 204. As such, class 420 contains a data member for customer ID, social
security number, and a collection of objects representing the orders associated with that particular
customer, thus implementing the foreign key. Class 420 also contains a number of methods to
both get and set the value ofthe data members, including an iterator method to iterate through
the order for this particular customer. Class 424 includes data members order ID and date and
also includes various methods to both set and get the values for these data members.
Additionally, class 424 contains a field, Customer_for_Order, implementing the foreign key with
a reference to the particular customer object that placed that order.
When a foreign key is contained in the object model, the object-relational mapping tool
typically creates a relationship in the source code between two classes to implement the foreign
key. As stated above, with a foreign key, one or more records in one table (the referring table)
refers to one record in another table (the referred table). This relationship is a one-to-many
relationship, although it may be a one-to-one relationship. Additionally, instead of being bidirectional, the relationship may be unidirectional. To define this relationship in the Java™
programming language, the class representing the referring table is defined to have a member that
is a collection of the class representing the referred table. A "collection" refers to a type
indicating a grouping of instances of other classes. Then, in the class reflecting the referred table,
a member is added providing a reference to the class that refers to it. For most cases, this is how
a foreign key is implemented. However, when the foreign key for two tables overlaps with the
primary key for those tables, it is more efficient to simply subclass the class reflecting the
referred class from the class reflecting the referring class.
Maintaining the Programmer's Customizations
Figure 5 depicts a flowchart ofthe states performed by the object-relational mapping tool
when mapping a database while maintaining the programmers customizations to the object model
as reflected by the source code. In other words, the database has been updated by the database
administrator, as shown in Figure 6, and the programmer now wants to incorporate these updates
into the source code without losing his customizations.
Figure 6 illustrates that the database administrator has added address column 602 to the
customer table 202. Using this example, the processing ofthe object-relational mapping tool will
now be explained. Referring again to Figure 5, the first state performed by the object-relational
mapping tool is to import the database schema (state 502). In this state, importation of the
database schema is facilitated through the use of the Java™ database connectivity product
(JDBC) available from Sun Microsystems of Palo Alto, California. JDBC is a Java™ application
program interface (API) for executing structured query language (SQL) statements. It consists
of a set of classes and interfaces written in the Java™ programming language. It provides a standard API for tool/database developers and makes it possible to write database applications
using a pure Java API. JDBC is described in greater detail in Hamilton, Cattell, and Fisher^
JDBC Database Access with Java™. Addison- Wesley (1997), which is incorporated herein by
reference.
When the database schema is imported, a database data structure is created that reflects
the database schema. For example, data structure 700, depicted in Figure 7, reflects the addition
of the address column 716 in the hash table 710. Order object 704 and the other portions of
customer object 702 are similar to those described with reference to Figure 4.
Next, the object-relational mapping tool compares the two database data structures 115
and 700 to isolate the database changes (state 504). In this state, the object-relational mapping
tool performs the comparison on a table-by-table basis, field-by-field basis, key-by-key basis,
and index-by-index basis to identify the differences between the two data structures.
After isolating the changes, the object-relational mapping tool updates object model 116
to reflect the changes to the database. For example, Figure 8 A depicts object model 116 after
it has been updated. In object model 116, name field 408 remains changed to the social security
number and the address field 802 has been added to object 400. As such, the object-relational
mapping tool has incorporated the database changes into the object model without disturbing the
changes made by the programmer. Having isolated the changes, the object-relational mapping
tool generates new source code from object model 116 (state 508). This new source code 804
is depicted in Figure 8B.
Figure 9 depicts a flowchart ofthe states performed when importing the database schema.
Below, the object-relational mapping tool utilizes a number of methods which are found on the
DatabaseMetaData interface of JDBC. The first state performed by the object-relational mapping tool is to call the GetTable method ofthe JDBC interface, which returns a description o the
tables ofthe database (state 902). After retrieving this table information, the object-relational
mapping tool selects one ofthe tables (state 904) and invokes the GetColumns method on the
JDBC interface, returning a description of all ofthe columns in that table (state 906). Next, the
object-relational mapping tool invokes the GetPrimaryKeys method to receive the primary key
for the table (state 908). After obtaining the primary key, the object-relational mapping tool
invokes the GetlmportedKeys method to obtain information regarding the foreign keys (state
910). After invoking this method, the object-relational mapping tool determines if there are
additional tables to be processed (state 912). If so, processing continues to state 904. Otherwise,
the object-relational mapping tool constructs a database data structure, like the one shown in
Figure 7, from all ofthe information received in the previous states (state 914).
Figure 10 depicts a flowchart ofthe states performed by the object-relational mapping
tool to isolate the changes between two database data structures. First, the object-relational
mapping tool compares all the tables between the two database data structures (state 1002). In
this state, the object-relational mapping tool compares the objects representing the tables and
notes if the number of tables has changed. Next, the object-relational mapping tool compares
all of the fields in the hash table of the two database data structures to determine if the type,
name, or number of fields have changed (state 1004). After comparing the fields, the object-
relational mapping tool compares the primary keys for each table to determine if a different key
has been designated as the primary key (state 1006). Then, the object-relational mapping tool
compares the foreign keys between both database data structures to determine if any of the
foreign keys have changed (state 1008). After performing these states, the object-relational
mapping tool has identified all ofthe database changes. Figures 11 A and 1 IB depict a flowchart ofthe states performed by the object-relational
mapping tool when updating the object model. At this point, the object-relational mapping tool
has isolated the changes made to the schema by the database administrator and now needs to
update the object model so that the new source code, reflecting both the schema changes and the
programmer's customizations, can be generated from the object model. The first state performed
by the object-relational mapping tool is to determine if the changes include the addition of a new
table (state 1102). In this case, the object-relational mapping tool creates a new object in the
object model to represent that table (state 1104). If not, the object-relational mapping tool
determines if a new column has been added (state 1106). If a new column has been added, the
object-relational mapping tool adds an entry to the hash table representative of that column (state
1108). If not, the object-relational mapping tool determines if a new foreign key has been added
to any of the tables (state 1110). If a new foreign key has been added, the object-relational
mapping tool adds to the list of relationship objects a new relationship object indicating the new
foreign key (state 1112).
If no new foreign key has been added, the object-relational mapping tool determines if
a table has been deleted (state 1114). If a table has been deleted, the object-relational mapping
tool deletes the corresponding object in the object model (state 1116). If not, the object-
relational mapping tool determines if a column has been deleted (state 1118), and if so, the
object-relational mapping tool deletes the corresponding entry in the hash table (state 1120).
If, however, a column has not been deleted, the object-relational mapping tool determines
if a foreign key has been deleted (state 1122 in Figure 1 IB). If a foreign key has been deleted,
the object-relational mapping tool removes from the list the relationship object that designates
the foreign key relationship (state 1124). If a foreign key has not been deleted, the object- relational mapping tool determines if a change to a column attribute has been made (state 1126).
If a change to a column attribute has been made, the object-relational mapping tool updates the
appropriate entry in the hash table (state 1128). Next, the object-relational mapping tool
determines if there has been a change made to a foreign key (state 1130). If so, the object-
relational mapping tool deletes the corresponding relationship object and adds a new relationship
object indicating the updated foreign key (state 1132).
Figure 12 depicts a flowchart ofthe states performed by the object-relational mapping
tool when generating a source code file from an object model. Although a specific order to the
states of Figure 12 is depicted, one skilled in the art will appreciate that other orderings may be
used. The first state performed by the object-relational mapping tool is to select an object
representing a table ("a table object") from the object model (state 1202). The object-relational
mapping tool then creates a class for the table object, storing the class definition into the source
code file (state 1204). After creating the class, the object-relational mapping tool adds data
members for each entry in the hash table of the table object (state 1206). After adding data
members, the object-relational mapping tool adds function members to both get and set the
values of the data members (state 1208). After adding the function members, the object-
relational mapping tool adds relationships into the class, where these relationships reflect foreign
keys ofthe database (state 1210). Next, the object-relational mapping tool determines if there
are more table objects in the object model (state 1212). If so, processing continues to state 1202.
Otherwise, processing ends. Conclusion
An improved object-relational mapping tool has been described that is able to maintain
a programmer's customizations to classes in source code when remapping a database. It
accomplishes this goal by importing the database schema of a changed database, by constructing
a database data structure from the schema, by isolating the database changes through a
comparison of this data structure to the preexisting data structure representing the state ofthe
database before it changed, by updating the object model to include the database changes while
preserving the programmer's customizations, and then by generating new source code from the
object model.
Although methods .and systems consistent with the present invention have been described
with reference to an embodiment thereof, those skilled in the art will know of various changes
in form and detail which may be made without departing from the spirit and scope ofthe present
invention as defined in the appended claims and their full scope of equivalents.
The Java Blend Tutorial, Java Blend Design Guide, and Java Blend Application
Programming Guide, which are attached as Appendixes A, B, and C, respectively, are
incorporated herein in their entirety as part of this Detailed Description.
What is claimed is:
1. A method in a computer system having a database with a schema, having a preexisting
version of a data structure reflecting the schema of the database, and having an object model
containing objects whose interrelationship reflects the schema ofthe database, comprising:
receiving database modifications to the schema ofthe database;
receiving object model modifications into the object model;
creating a new version ofthe data structure reflecting the schema ofthe database with the
received database modifications;
comparing the new version ofthe data structure with the preexisting version ofthe data
structure to isolate the database modifications;
updating the object model to reflect the database modifications such that the updated
object model contains both the database modifications and the object model modifications; and
generating source code based on the updated object model.
2. The method of claim 1 wherein the generating includes:
obtaining a class corresponding to each object in the object model.

Claims

3. The method of claim 2 wherein the database has tables with fields, wherein the object
model has a corresponding object for each table, wherein each object in the object model has an-
item reflecting a field in the corresponding table, and wherein the creating a class includes:
for each object in the object model, creating a data member for each item in the object.
4. The method of claim 3 wherein the creating a data member includes:
creating a function member to retrieve a value ofthe data member.
5. The method of claim 3 wherein the creating a data member includes:
creating a function member to set a value ofthe data member.
6. A method in a computer system having a first data structure reflecting a logical structural
relationship among data in a data source, comprising:
creating a second data structure reflecting a modified version of the logical structural
relationship among the data in the data source;
comparing the first data structure with the second data structure to isolate the
modifications made to the logical structural relationship among the data; and
generating source code reflecting the modifications.
7. The method of cl.aim 6 wherein the generating includes:
creating classes that reflect the modified version ofthe logical structural relationship.
8. The method of claim 7 wherein the creating includes:
creating classes in the Java programming language.
9. The method of claim 6 wherein the data source is a database, and wherein the creating
includes:
importing the modified version ofthe logical structural relationship from the database.
10. The method of claim 9 wherein the database can be accessed using JDBC methods, .and
wherein the importing includes:
invoking the JDBC methods to import the modified version of the logical structural
relationship.
11. A method in a computer system having a group of data structures reflecting a logical
structure of a data source, comprising:
receiving customizations into the group of data structures;
receiving an indication that the data source has been modified; and
incorporating the modifications into the group of data structures while preserving the
customizations.
12. The method of claim 11 wherein the group of data structures is .an object model, .and
wherein the method further includes:
generating source code based on the object model that reflects the customizations and the
modifications.
13. A data processing system, comprising:
a secondary storage device with a database having a logical structure comprising tables _
with rows and columns;
a memory containing:
a first database data structure reflecting the logical structure ofthe database;
an object model containing objects based on the first database data structure;
an object-relational mapping tool configured to operate after the logical structure ofthe
database has been modified, configured to import the modified logical structure,
configured to create a second database data structure based on the modified logical
structure, configured to compare the first and the second database data structures to
isolate the modifications made to the logical structure, and configured to update the
object model with the isolated modifications; and
a processor configured to run the object-relational mapping tool.
14. The data processing system of claim 13 wherein the obj ect model has customizations and
wherein the object-relational mapping tool has a preserving component configured to add the
isolated modifications to the object model while preserving the customizations.
15. The data processing system of claim 14 wherein the object-relational mapping tool
includes a code generator configured to generate source code based on the updated object model.
16. The data processing system of claim 15 wherein the source code has classes.
17. The data processing system of claim 13 wherein the database can be accessed using
JDBC methods .and wherein the object-relational mapping tool imports the modified logical,
structure using the JDBC methods.
18. A computer system having a database with a schema, having a preexisting version of a
data structure reflecting the schema of the database, and having an object model containing
objects whose interrelationships reflect the schema ofthe database, comprising:
means for receiving database modifications to the schema ofthe database;
means for receiving object model modifications into the object model;
means for creating a new version of the data structure reflecting the schema of the
database with the received database modifications;
means for comparing the new version ofthe data structure with the preexisting version
ofthe data structure to isolate the database modifications;
means for updating the object model to reflect the database modifications such that the
updated object model contains both the database modifications and the object model
modifications; and
means for generating source code based on the updated object model.
19. A computer-readable medium containing instructions for controlling a computer system
to perform a method, the computer system having a first data structure reflecting a logical
structural relationship among data in a data source, the method comprising:
creating a second data structure reflecting a modified version of the logical structural
relationship among the data in the data source; and
comparing the first data structure with the second data structure to isolate the
modifications made to the logical structural relationship among the data so that source code can
be generated to reflect the modifications.
20. The computer-readable medium of claim 19 further including:
generating the source code to reflect the modifications.
21. The computer-readable medium of claim 20 wherein the generating includes:
creating classes that reflect the modified version ofthe logical structural relationship.
22. The computer-readable medium of claim 21 wherein the creating includes:
creating classes in the Java programming language.
23. The computer-readable medium of claim 19 wherein the data source is a database, and
wherein the creating includes:
importing the modified version ofthe logical structural relationship from the database.
24. The computer-readable medium of claim 23 wherein the database can be accessed using
JDBC methods, and wherein the importing includes:
invoking the JDBC methods to import the modified version of the logical structural
relationship.
25. A computer-readable medium containing instructions for controlling a computer system
to perform a method, the computer system having a group of data structures reflecting a logical
structure of a data source, the method comprising:
receiving customizations into the group of data structures;
receiving an indication that the data source has been modified; and
incorporating the modifications into the group of data structures while preserving the
customizations.
26. The computer-readable medium of claim 25, wherein the group of data structures is an
object model, and wherein the method further includes:
generating source code based on the object model that reflects the customizations and the
modifications.
27. A computer-readable memory device encoded with an object model data structure
reflecting a schema of a database, the object model for use in generating source code based on
the schema, the object model data structure comprising:
at least one object that receives customizations from a user and that is updated to reflect
updates to the schema while preserving the customizations when the schema is updated.
PCT/US1998/027187 1997-12-22 1998-12-21 Integrating both modifications to an object model and modifications to a database into source code by an object-relational mapping tool WO1999032996A1 (en)

Priority Applications (4)

Application Number Priority Date Filing Date Title
AU22024/99A AU2202499A (en) 1997-12-22 1998-12-21 Integrating both modifications to an object model and modifications to a database into source code by an object-relational mapping tool
JP2000525832A JP2003517650A (en) 1997-12-22 1998-12-21 Integrate changes to the object model and changes to the database into the source code using an object-relational mapping tool
DE69823388T DE69823388D1 (en) 1997-12-22 1998-12-21 INTEGRATION OF CHANGES TO AN OBJECT MODEL AND CHANGES TO A DATABASE IN AN APPROPRIATE SOURCE LANGUAGE BY A TOOL FOR OBJECT RELATIONAL IMAGE
EP98966033A EP1042721B1 (en) 1997-12-22 1998-12-21 Integrating both modifications to an object model and modifications to a database into source code by an object-relational mapping tool

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US6841597P 1997-12-22 1997-12-22
US60/068,415 1997-12-22
US09/105,957 1998-06-29
US09/105,957 US6385618B1 (en) 1997-12-22 1998-06-29 Integrating both modifications to an object model and modifications to a database into source code by an object-relational mapping tool

Publications (1)

Publication Number Publication Date
WO1999032996A1 true WO1999032996A1 (en) 1999-07-01

Family

ID=26748950

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US1998/027187 WO1999032996A1 (en) 1997-12-22 1998-12-21 Integrating both modifications to an object model and modifications to a database into source code by an object-relational mapping tool

Country Status (6)

Country Link
US (2) US6385618B1 (en)
EP (1) EP1042721B1 (en)
JP (1) JP2003517650A (en)
AU (1) AU2202499A (en)
DE (1) DE69823388D1 (en)
WO (1) WO1999032996A1 (en)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005057365A2 (en) * 2003-12-08 2005-06-23 Ebay Inc. System to automatically regenerate software code
WO2007018819A2 (en) 2005-07-29 2007-02-15 Microsoft Corporation Code generation patterns
US7660810B2 (en) 1999-10-01 2010-02-09 Gautestad Arild O Method and system for publication and revision or hierarchically organized sets of static intranet and internet web pages
EP2157517A1 (en) * 2008-08-19 2010-02-24 Siemens Aktiengesellschaft A process and a system for updating a data structure in a relational database used within a manufacturing execution system
US7895241B2 (en) 2006-10-16 2011-02-22 Schlumberger Technology Corp. Method and apparatus for oilfield data repository

Families Citing this family (107)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7388092B2 (en) * 1996-05-03 2008-06-17 Applera Corporation Oligonucleotides and analogs labeled with energy transfer dyes
US6385618B1 (en) * 1997-12-22 2002-05-07 Sun Microsystems, Inc. Integrating both modifications to an object model and modifications to a database into source code by an object-relational mapping tool
US7062456B1 (en) 1999-02-09 2006-06-13 The Chase Manhattan Bank System and method for back office processing of banking transactions using electronic files
EP1093061A1 (en) * 1999-10-14 2001-04-18 SAP Aktiengesellschaft Integrated database federation system
US7152228B2 (en) * 1999-07-08 2006-12-19 Science Applications International Corporation Automatically generated objects within extensible object frameworks and links to enterprise resources
US6339777B1 (en) * 1999-07-30 2002-01-15 International Business Machines Corporation Method and system for handling foreign key update in an object-oriented database environment
US6799299B1 (en) * 1999-09-23 2004-09-28 International Business Machines Corporation Method and apparatus for creating stylesheets in a data processing system
US8601373B1 (en) * 1999-11-16 2013-12-03 Ebay Inc. Network-based sales system with customizable user interface
US6931414B1 (en) * 2000-02-18 2005-08-16 Microsoft Corporation Creating visual data models combining multiple inter-related model segments
US7143108B1 (en) * 2000-04-06 2006-11-28 International Business Machines Corporation Apparatus and method for deletion of objects from an object-relational system in a customizable and database independent manner
US7725878B1 (en) * 2000-05-12 2010-05-25 Oracle International Corporation Property bundles on a per instance basis
US7185005B1 (en) * 2000-05-12 2007-02-27 Oracle International Corporation Nested transactions in a file system
US7389493B1 (en) * 2000-05-12 2008-06-17 Oracle International Corporation Categories on a per instance basis
US7987217B2 (en) * 2000-05-12 2011-07-26 Oracle International Corporation Transaction-aware caching for document metadata
US6968336B1 (en) * 2000-05-18 2005-11-22 International Business Machines Corporation Method for generating, organizing table codes either code is highest code level or code is linked to parent code in hierarchical structure
US6591275B1 (en) 2000-06-02 2003-07-08 Sun Microsystems, Inc. Object-relational mapping for tables without primary keys
US6895512B1 (en) * 2000-06-30 2005-05-17 Microsoft Corporation Methods and systems for synchronizing security descriptors in systems that use multiple security descriptor specifications
US7328211B2 (en) 2000-09-21 2008-02-05 Jpmorgan Chase Bank, N.A. System and methods for improved linguistic pattern matching
JP2002328935A (en) * 2001-05-07 2002-11-15 Fujitsu Ltd Program and data manipulation apparatus for allowing flexible schema in data manipulation of object oriented database
CA2353026A1 (en) * 2001-07-13 2003-01-13 Sygenics Inc. Adaptive data architecture
WO2003009105A2 (en) 2001-07-20 2003-01-30 Fairmarket, Inc. Automated listing management
US7080361B2 (en) * 2001-07-30 2006-07-18 Lockheed Martin Corporation Process for generating enterprise java bean components from an SQL database
US7003776B2 (en) * 2001-08-01 2006-02-21 Oic Acquisition I Corporation System and method for object persistence life-cycle and object caching integration
US6907433B2 (en) * 2001-08-01 2005-06-14 Oracle International Corp. System and method for managing object to relational one-to-many mapping
EP1298539A1 (en) * 2001-10-01 2003-04-02 Sun Microsystems, Inc. Method and device for marking and filtering data elements in a database
US20030088654A1 (en) * 2001-11-02 2003-05-08 Gordon Good Directory server schema replication
US7080093B2 (en) * 2002-01-14 2006-07-18 Sun Microsystems, Inc. System and method for database design
US20030158944A1 (en) * 2002-02-19 2003-08-21 International Business Machines Corporation Software control in a business transaction environment
US7987246B2 (en) * 2002-05-23 2011-07-26 Jpmorgan Chase Bank Method and system for client browser update
US20030233632A1 (en) * 2002-06-12 2003-12-18 Lockheed Martin Corporation Automatically generated client application source code using database table definitions
US7096216B2 (en) * 2002-07-20 2006-08-22 Microsoft Corporation Performing operations on a set of objects in a database system
US7711675B2 (en) * 2002-07-22 2010-05-04 Microsoft Corporation Database simulation of data types
US7224739B2 (en) * 2002-08-21 2007-05-29 Intel Corporation Controlled frequency signals
US7263698B2 (en) * 2002-08-29 2007-08-28 Sap Aktiengesellschaft Phased upgrade of a computing environment
US7171432B2 (en) * 2002-08-29 2007-01-30 Sap Aktiengesellschaft Phased upgrade of a computing environment
US7340650B2 (en) * 2002-10-30 2008-03-04 Jp Morgan Chase & Co. Method to measure stored procedure execution statistics
US20040103199A1 (en) * 2002-11-22 2004-05-27 Anthony Chao Method and system for client browser update from a lite cache
US7069269B2 (en) * 2002-12-03 2006-06-27 International Business Machines Corporation Method, system and program product for mapping data fields between a data source and a data target
US20040117408A1 (en) * 2002-12-17 2004-06-17 Capital One Financial Corporation Systems, methods and articles of manufacture for determining available space in a database
US7430557B1 (en) * 2003-03-19 2008-09-30 Unisys Corporation System and method for improving database reorganization time
WO2004086222A2 (en) * 2003-03-26 2004-10-07 Bizplus Limited Development of software systems
US20040230555A1 (en) * 2003-05-16 2004-11-18 John Phenix System and method for representing a relational database as a java object
US7363313B2 (en) * 2003-08-07 2008-04-22 International Business Machines Corporation Method, system, and program product for rebasing an application
WO2005015361A2 (en) 2003-08-08 2005-02-17 Jp Morgan Chase Bank System for archive integrity management and related methods
US20050065964A1 (en) 2003-09-19 2005-03-24 Ziemann David M. Update of a tree-based database
KR20060089213A (en) * 2003-09-24 2006-08-08 소니 가부시끼 가이샤 Database schemer update method
US8041687B2 (en) * 2003-09-30 2011-10-18 International Business Machines Corporation Dynamic generation of XML Schema for backend driven data validation
US7302564B2 (en) * 2003-12-24 2007-11-27 I-Net Software Gmbh Translation of secure communications for handshake protocols
US7610258B2 (en) * 2004-01-30 2009-10-27 Microsoft Corporation System and method for exposing a child list
US7316001B2 (en) 2004-06-05 2008-01-01 Graphlogic Inc. Object process graph system
US7493335B2 (en) * 2004-07-02 2009-02-17 Graphlogic Inc. Object process graph relational database interface
JP4581520B2 (en) * 2004-07-09 2010-11-17 富士ゼロックス株式会社 Document management program, document management method, and document management apparatus
US7360209B2 (en) 2004-07-16 2008-04-15 Graphlogic Inc. Object process graph application controller-viewer
US7366974B2 (en) * 2004-09-03 2008-04-29 Jp Morgan Chase Bank System and method for managing template attributes
CA2578385A1 (en) 2004-09-10 2006-03-23 Graphlogic Inc. Object process graph application development system
US20060059210A1 (en) * 2004-09-16 2006-03-16 Macdonald Glynne Generic database structure and related systems and methods for storing data independent of data type
US20090132466A1 (en) * 2004-10-13 2009-05-21 Jp Morgan Chase Bank System and method for archiving data
US7809763B2 (en) * 2004-10-15 2010-10-05 Oracle International Corporation Method(s) for updating database object metadata
US20060190476A1 (en) * 2005-02-18 2006-08-24 Mettovaara Risto K Database storage system and associated method
US20060195492A1 (en) * 2005-02-25 2006-08-31 Microsoft Corporation Method and apparatus for implementing an adaptive data warehouse
US7685561B2 (en) * 2005-02-28 2010-03-23 Microsoft Corporation Storage API for a common data platform
US7853961B2 (en) * 2005-02-28 2010-12-14 Microsoft Corporation Platform for data services across disparate application frameworks
US20060195460A1 (en) * 2005-02-28 2006-08-31 Microsoft Corporation Data model for object-relational data
US8169472B2 (en) * 2005-08-22 2012-05-01 Olympus Corporation Image display apparatus with interactive database
US7676493B2 (en) * 2005-09-07 2010-03-09 Microsoft Corporation Incremental approach to an object-relational solution
US8065606B1 (en) 2005-09-16 2011-11-22 Jpmorgan Chase Bank, N.A. System and method for automating document generation
US7958456B2 (en) * 2005-12-23 2011-06-07 Apple Inc. Scrolling list with floating adjacent index symbols
US7958031B2 (en) * 2005-12-13 2011-06-07 International Business Machines Corporation Apparatus, system, and method for automated identity relationship maintenance
US20070162493A1 (en) * 2005-12-30 2007-07-12 Matthias Schmitt Business object duplicates
US20070174337A1 (en) * 2006-01-24 2007-07-26 Lavergne Debra Brouse Testing quality of relationship discovery
US7720872B1 (en) * 2006-03-07 2010-05-18 Sprint Communications Company L.P. Software interface mapping tool
US7526501B2 (en) * 2006-05-09 2009-04-28 Microsoft Corporation State transition logic for a persistent object graph
US20070266041A1 (en) * 2006-05-11 2007-11-15 Microsoft Corporation Concept of relationshipsets in entity data model (edm)
US7418453B2 (en) * 2006-06-15 2008-08-26 International Business Machines Corporation Updating a data warehouse schema based on changes in an observation model
US8346725B2 (en) * 2006-09-15 2013-01-01 Oracle International Corporation Evolution of XML schemas involving partial data copy
US8104076B1 (en) 2006-11-13 2012-01-24 Jpmorgan Chase Bank, N.A. Application access control system
US8930890B2 (en) * 2006-12-05 2015-01-06 International Business Machines Corporation Software model skinning
US8756561B2 (en) * 2006-12-05 2014-06-17 International Business Machines Corporation Software model normalization and mediation
US8214797B2 (en) * 2007-02-01 2012-07-03 Microsoft Corporation Visual association creation for object relational class development
US20080189311A1 (en) * 2007-02-01 2008-08-07 Microsoft Corporation Visual controls for stored procedure and object relational class development
US8024701B2 (en) * 2007-03-27 2011-09-20 Microsoft Corporation Visual creation of object/relational constructs
US7788269B2 (en) * 2007-03-30 2010-08-31 International Business Machines Corporation Integration of predefined multi-dimensional and flexibly-ordered dynamic search interfaces
US20080270475A1 (en) * 2007-04-27 2008-10-30 Sap Ag Data processing systems and methods for connecting business objects to data sources
US7702695B2 (en) * 2007-06-27 2010-04-20 Microsoft Corporation Object relational map verification system
US7979477B2 (en) * 2008-03-15 2011-07-12 Microsoft Corporation Placeholder control for updating database object
CN101546259B (en) * 2008-03-28 2012-10-03 国际商业机器公司 Object-relation mapping system supporting model extension in runtime, and method thereof
US8010578B2 (en) * 2008-06-27 2011-08-30 Microsoft Corporation Method of refactoring a running database system
US8280924B2 (en) * 2009-03-26 2012-10-02 Microsoft Corporation Object-relational mapping with dynamic relational schemas
US8478705B2 (en) * 2010-01-15 2013-07-02 International Business Machines Corporation Portable data management using rule definitions
US8666998B2 (en) 2010-09-14 2014-03-04 International Business Machines Corporation Handling data sets
US9134971B2 (en) * 2010-09-29 2015-09-15 Rockwell Automation Technologies, Inc. Extensible device object model
US9038177B1 (en) 2010-11-30 2015-05-19 Jpmorgan Chase Bank, N.A. Method and system for implementing multi-level data fusion
US8949166B2 (en) 2010-12-16 2015-02-03 International Business Machines Corporation Creating and processing a data rule for data quality
US20120265734A1 (en) * 2011-04-14 2012-10-18 Microsoft Corporation Incremental compilation of object-to-relational mappings
US20130019225A1 (en) * 2011-07-11 2013-01-17 Microsoft Corporation Incremental Inferences for Developing Data Models
US9292588B1 (en) 2011-07-20 2016-03-22 Jpmorgan Chase Bank, N.A. Safe storing data for disaster recovery
US8898104B2 (en) 2011-07-26 2014-11-25 International Business Machines Corporation Auto-mapping between source and target models using statistical and ontology techniques
US8874621B1 (en) * 2011-10-09 2014-10-28 LockPath, Inc. Dynamic content systems and methods
US10540373B1 (en) 2013-03-04 2020-01-21 Jpmorgan Chase Bank, N.A. Clause library manager
US9613112B2 (en) * 2013-03-15 2017-04-04 Miosoft Corporation Structuring data
US9665403B2 (en) 2013-03-15 2017-05-30 Miosoft Corporation Executing algorithms in parallel
US10705802B2 (en) * 2013-03-20 2020-07-07 Microsoft Technology Licensing, Llc Extensible and queryable strong types
WO2015027425A1 (en) * 2013-08-29 2015-03-05 华为技术有限公司 Method and device for storing data
US9773029B2 (en) * 2016-01-06 2017-09-26 International Business Machines Corporation Generation of a data model
EP3232342B1 (en) * 2016-04-14 2019-11-27 QlikTech International AB Methods and systems for bidirectional indexing summary
US10467202B2 (en) * 2017-07-21 2019-11-05 Bank Of America Corporation System for multi-release and parallel development of a database
CN110286883B (en) * 2019-06-03 2024-01-30 中国建设银行股份有限公司 Intelligent database coding monitoring method and device and electronic equipment

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0472812A1 (en) * 1990-08-28 1992-03-04 Landis & Gyr Technology Innovation AG Method to charge an object code version to a first program stored in the computer of an appliance into an object code version of a second program which was derived by at least one change to the first program

Family Cites Families (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4589092A (en) 1983-12-12 1986-05-13 International Business Machines Corporation Data buffer having separate lock bit storage array
US5043876A (en) 1988-05-27 1991-08-27 International Business Machines Corporation N-level file shadowing and recovery in a shared file system
US5261069A (en) 1990-08-13 1993-11-09 Hewlett-Packard Company Method of maintaining consistency of cached data in a database system
US5291583A (en) 1990-12-14 1994-03-01 Racal-Datacom, Inc. Automatic storage of persistent ASN.1 objects in a relational schema
US5263155A (en) 1991-02-21 1993-11-16 Texas Instruments Incorporated System for selectively registering and blocking requests initiated by optimistic and pessimistic transactions respectively for shared objects based upon associated locks
US5301297A (en) 1991-07-03 1994-04-05 Ibm Corp. (International Business Machines Corp.) Method and means for managing RAID 5 DASD arrays having RAID DASD arrays as logical devices thereof
US5596746A (en) 1991-10-21 1997-01-21 General Electric Company Method for transforming relational data base schemas into object models using ideal table meta models
US5280612A (en) 1991-11-26 1994-01-18 International Business Machines Corporation Multiple version database concurrency control system
US5504885A (en) 1993-06-29 1996-04-02 Texas Instruments Incorporated O-R gateway: a system for connecting object-oriented application programs and relational databases
WO1995003586A1 (en) 1993-07-21 1995-02-02 Persistence Software, Inc. Method and apparatus for generation of code for mapping relational data to objects
WO1995004960A2 (en) 1993-08-02 1995-02-16 Persistence Software, Inc. Method and apparatus for managing relational data in an object cache
US5422845A (en) * 1993-09-30 1995-06-06 Intel Corporation Method and device for improved programming threshold voltage distribution in electrically programmable read only memory array
US5548749A (en) * 1993-10-29 1996-08-20 Wall Data Incorporated Semantic orbject modeling system for creating relational database schemas
US5774731A (en) 1995-03-22 1998-06-30 Hitachi, Ltd. Exclusive control method with each node controlling issue of an exclusive use request to a shared resource, a computer system therefor and a computer system with a circuit for detecting writing of an event flag into a shared main storage
US5542078A (en) 1994-09-29 1996-07-30 Ontos, Inc. Object oriented data store integration environment for integration of object oriented databases and non-object oriented data facilities
US5835910A (en) 1994-11-10 1998-11-10 Cadis, Inc. Method and system for comparing attributes in an object-oriented management system
US5742813A (en) 1994-11-10 1998-04-21 Cadis, Inc. Method and apparatus for concurrency in an object oriented database using lock inheritance based on class objects
US5583983A (en) * 1994-11-17 1996-12-10 Objectware, Inc. Multi-platform object-oriented software development and deployment system
US5873093A (en) * 1994-12-07 1999-02-16 Next Software, Inc. Method and apparatus for mapping objects to a data source
US5893108A (en) 1994-12-29 1999-04-06 International Business Machines Corporation System, method, and computer program product for efficiently translating relational tuples to object-oriented objects
US5799309A (en) 1994-12-29 1998-08-25 International Business Machines Corporation Generating an optimized set of relational queries fetching data in an object-relational database
US5574882A (en) 1995-03-03 1996-11-12 International Business Machines Corporation System and method for identifying inconsistent parity in an array of storage
US5850544A (en) 1995-06-06 1998-12-15 International Business Machines Corporation System and method for efficient relational query generation and tuple-to-object translation in an object-relational gateway supporting class inheritance
US5717924A (en) 1995-07-07 1998-02-10 Wall Data Incorporated Method and apparatus for modifying existing relational database schemas to reflect changes made in a corresponding object model
US5732257A (en) 1995-09-13 1998-03-24 Hewlett-Packard Co. Object conversion method from a flat object space to a class structured space
US5878419A (en) 1996-01-19 1999-03-02 Novell, Inc. Method for creating a relational description of a formatted transaction
US6049673A (en) 1996-03-08 2000-04-11 Organicnet, Inc. Organicware applications for computer systems
US5907846A (en) 1996-06-07 1999-05-25 Electronic Data Systems Corporation Method and system for accessing relational databases using objects
US5991763A (en) * 1996-10-29 1999-11-23 Sun Microsystems, Inc. Method and apparatus for embedding concatenated data files into object files during runtime in a virtual file system
US5857197A (en) 1997-03-20 1999-01-05 Thought Inc. System and method for accessing data stores as objects
US6182274B1 (en) * 1997-05-01 2001-01-30 International Business Machines Corporation Reusing code in object-oriented program development
US5878411A (en) 1997-06-27 1999-03-02 International Business Machines Corporation Dependent object class and subclass mapping to relational data store
US5920725A (en) * 1997-07-02 1999-07-06 Adaptivity Inc. Run-time object-synthesis and transparent client/server updating of distributed objects using a meta server of all object descriptors
US5937409A (en) 1997-07-25 1999-08-10 Oracle Corporation Integrating relational databases in an object oriented environment
US5974428A (en) * 1997-08-29 1999-10-26 International Business Machines Corporation Method and apparatus for class version naming and mapping
US6009428A (en) 1997-09-15 1999-12-28 International Business Machines Corporation System and method for providing a single application program interface for heterogeneous databases
US6175837B1 (en) * 1998-06-29 2001-01-16 Sun Microsystems, Inc. Object-relational mapping toll that processes views
US6385618B1 (en) * 1997-12-22 2002-05-07 Sun Microsystems, Inc. Integrating both modifications to an object model and modifications to a database into source code by an object-relational mapping tool
US6038565A (en) 1998-01-16 2000-03-14 International Business Machines Corporation Object oriented data format mapping mechanism
US6003040A (en) 1998-01-23 1999-12-14 Mital; Vijay Apparatus and method for storing, navigating among and adding links between data items in computer databases

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0472812A1 (en) * 1990-08-28 1992-03-04 Landis & Gyr Technology Innovation AG Method to charge an object code version to a first program stored in the computer of an appliance into an object code version of a second program which was derived by at least one change to the first program

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
"A White Paper: TOPLink for Java", 1997, THE OBJECT PEOPLE, CANADA, XP002098153 *
"AUTOMATICALLY REVISING FUNCTION PROTOTYPES IN C ANC C + + IMPLEMENTATIONS OF SYSTEM OBJECT MODEL CLASSES", IBM TECHNICAL DISCLOSURE BULLETIN, vol. 37, no. 8, 1 August 1994 (1994-08-01), pages 363 - 365, XP000456452 *
"Sun simplifies database programming with Java Blend", PRESS RELEASE / SUN MICROSYSTEMS, MOUNTAIN VIEW, CA, USA, 21 August 1997 (1997-08-21), http://java.sun.com:8081/pr/1997/august/pr970821-01.html, pages 1 - 3, XP002098152 *

Cited By (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7660810B2 (en) 1999-10-01 2010-02-09 Gautestad Arild O Method and system for publication and revision or hierarchically organized sets of static intranet and internet web pages
US7779386B2 (en) * 2003-12-08 2010-08-17 Ebay Inc. Method and system to automatically regenerate software code
US7350192B2 (en) * 2003-12-08 2008-03-25 Ebay Inc. Method and system to automatically generate software code
WO2005057365A2 (en) * 2003-12-08 2005-06-23 Ebay Inc. System to automatically regenerate software code
US7890537B2 (en) 2003-12-08 2011-02-15 Ebay Inc. Custom caching
US7406464B2 (en) 2003-12-08 2008-07-29 Ebay Inc. Custom caching
US8898147B2 (en) 2003-12-08 2014-11-25 Ebay Inc. Method and system for a transparent application of multiple queries across multiple data sources
WO2005057365A3 (en) * 2003-12-08 2005-09-09 Ebay Inc System to automatically regenerate software code
US9547601B2 (en) 2003-12-08 2017-01-17 Paypal, Inc. Custom caching
US8046376B2 (en) 2003-12-08 2011-10-25 Ebay Inc. Method and system to automatically generate classes for an object to relational mapping system
US8996534B2 (en) 2003-12-08 2015-03-31 Ebay Inc. Custom caching
US8954439B2 (en) 2003-12-08 2015-02-10 Ebay Inc. Method and system to automatically generate software code
US8515949B2 (en) 2003-12-08 2013-08-20 Ebay Inc. Method and system for a transparent application of multiple queries across multiple data sources
US7725460B2 (en) 2003-12-08 2010-05-25 Ebay Inc. Method and system for a transparent application of multiple queries across multiple data sources
US8176040B2 (en) 2003-12-08 2012-05-08 Ebay Inc. Method and system for a transparent application of multiple queries across multiple data sources
US8200684B2 (en) 2003-12-08 2012-06-12 Ebay Inc. Method and system for dynamic templatized query language in software
US8291376B2 (en) 2003-12-08 2012-10-16 Ebay Inc. Method and system to automatically regenerate software code
US8301590B2 (en) 2003-12-08 2012-10-30 Ebay Inc. Custom caching
US9448944B2 (en) 2003-12-08 2016-09-20 Paypal, Inc. Method and system for dynamic templatized query language in software
US8429598B2 (en) 2003-12-08 2013-04-23 Ebay, Inc. Method and system to automatically generate software code
WO2007018819A2 (en) 2005-07-29 2007-02-15 Microsoft Corporation Code generation patterns
EP1913490A4 (en) * 2005-07-29 2009-10-21 Microsoft Corp Code generation patterns
EP1913490A2 (en) * 2005-07-29 2008-04-23 Microsoft Corporation Code generation patterns
US7895241B2 (en) 2006-10-16 2011-02-22 Schlumberger Technology Corp. Method and apparatus for oilfield data repository
US8326888B2 (en) 2006-10-16 2012-12-04 Schlumberger Technology Corporation Method and apparatus for oilfield data repository
US9292501B2 (en) 2008-08-19 2016-03-22 Siemens Aktiengesellschaft Process and a system for updating a data structure in a relational database used within a manufacturing execution system
EP2157517A1 (en) * 2008-08-19 2010-02-24 Siemens Aktiengesellschaft A process and a system for updating a data structure in a relational database used within a manufacturing execution system

Also Published As

Publication number Publication date
US6385618B1 (en) 2002-05-07
AU2202499A (en) 1999-07-12
JP2003517650A (en) 2003-05-27
US20010018690A1 (en) 2001-08-30
US6609133B2 (en) 2003-08-19
DE69823388D1 (en) 2004-05-27
EP1042721A1 (en) 2000-10-11
EP1042721B1 (en) 2004-04-21

Similar Documents

Publication Publication Date Title
US6609133B2 (en) Integrating both modifications to an object model and modifications to a database into source code by an object-relational mapping tool
US6360223B1 (en) Rule-based approach to object-relational mapping strategies
US6243709B1 (en) Method and apparatus for loading stored procedures in a database corresponding to object-oriented data dependencies
US6374256B1 (en) Method and apparatus for creating indexes in a relational database corresponding to classes in an object-oriented application
US6268850B1 (en) User interface for the specification of lock groups
US6175837B1 (en) Object-relational mapping toll that processes views
US6279008B1 (en) Integrated graphical user interface method and apparatus for mapping between objects and databases
US6070165A (en) Method for managing and accessing relational data in a relational cache
US6101502A (en) Object model mapping and runtime engine for employing relational database with object oriented software
US5542078A (en) Object oriented data store integration environment for integration of object oriented databases and non-object oriented data facilities
US6341289B1 (en) Object identity and partitioning for user defined extents
US6243710B1 (en) Methods and apparatus for efficiently splitting query execution across client and server in an object-relational mapping
US7979456B2 (en) Method of managing and providing parameterized queries
US6591275B1 (en) Object-relational mapping for tables without primary keys
US7177878B2 (en) Simple persistence mechanism for server based web applications
US7213014B2 (en) Apparatus and method for using a predefined database operation as a data source for a different database operation
Cabibbo et al. Managing inheritance hierarchies in object/relational mapping tools
EP1040432B1 (en) Method and apparatus for loading stored procedures in a database corresponding to object-oriented data dependencies
EP1000403A1 (en) An integrated graphical user interface method and apparatus for mapping between objects and databases
EP1008068A1 (en) User interface for the specification of index groups over classes
Lin Object-oriented database systems: A survey
Cobbs Persistence programming
WO1999033005A1 (en) Object-relational mapping tool that processes views
Rahayu et al. Object-Oriented Features in Oracle

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AL AM AT AU AZ BA BB BG BR BY CA CH CN CU CZ DE DK EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MD MG MK MN MW MX NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT UA UG UZ VN YU ZW

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): GH GM KE LS MW SD SZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
ENP Entry into the national phase

Ref country code: JP

Ref document number: 2000 525832

Kind code of ref document: A

Format of ref document f/p: F

NENP Non-entry into the national phase

Ref country code: KR

WWE Wipo information: entry into national phase

Ref document number: 1998966033

Country of ref document: EP

WWP Wipo information: published in national office

Ref document number: 1998966033

Country of ref document: EP

REG Reference to national code

Ref country code: DE

Ref legal event code: 8642

WWG Wipo information: grant in national office

Ref document number: 1998966033

Country of ref document: EP