This article is from the Object-Oriented Technology FAQ, by Bob Hathaway firstname.lastname@example.org with numerous contributions by others.
Connecting C++ with Relational Databases
Subtleware for C++ (Subtleware) is a software development toolset which
openly automates C++ connectivity to relational databases by providing:
* A C++ pre-processor that automatically generates the code necessary
to read and write C++ objects to a relational database.
* A schema mapper that defines C++ classes from relational database
* A class library that simplifies C++ application access to existing
SUBTLEWARE INCREASES PROGRAMMER PRODUCTIVITY
Subtleware vastly simplifies the coding necessary for C++ to work with
* It jump starts application development by generating C++ class
definitions from relational database schema.
* It speeds application development by eliminating the need to
write hundreds of lines of database mapping code per class.
* It dramatically reduces application maintenance time by eliminating
the need to modify the database mapping code with each C++ class
As a result, C++ application developers can focus on what brings value to
their organization, application development; and, C++ application
development projects can reduce their development costs as well as speed
SUBTLEWARE IS DESIGNED TO BE OPEN
* Subtleware adds value to your C++ development environment!
Subtleware fits into your existing C++ development environment by
working with your preferred C++ design tools, compilers, and class
libraries. No Subtleware-specific design tools are necessary.
* Subtleware works directly with your existing C++ class definitions!
* Subtleware adds value to your relational database systems!
Your C++ applications can work concurrently and share data with
your other relational database applications. Subtleware makes your
existing relational database into a powerful OODBMS.
* Subtleware library source code and generated code is freely
available! No run-time fees are imposed.
SUBTLEWARE IS WIDELY AVAILABLE
Subtleware runs on a wide range of computing platforms:
* PC's running Windows 3.x, Windows NT, OS/2, and DOS.
* Unix workstations, including Sun and HP.
Subtleware supports a variety of database interfaces:
* ANSI SQL * ODBC
* Oracle * Sybase
* Watcom * Informix (planned 8/95)
* Ingres (planned 10/95)
* ODMG (planned 12/95)
Subtleware supports virtually all C++ 2.x and 3.x compilers, including:
* Borland C++
* Microsoft Visual C++
* HP C++
* SunPro C++
SUBTLEWARE IMPROVES SOFTWARE QUALITY
Subtleware generates well-documented, bug-free code. Furthermore,
Subtleware code generation can be customized for your application
requirements. Using Subtleware greatly increases the reliability and
reusability of your applications.
SUBTLEWARE OPTIMIZES APPLICATION PERFORMANCE
Subtleware generates static SQL code that can be linked directly into your
application or packaged as a DLL or shared library. Subtleware does not
require the use of high-overhead, run-time modules for managing your
SUBTLEWARE PROVIDES RUN-TIME FLEXIBILITY
Subtleware offers dynamic SQL capabilities for performing run-time
specified data access.
SUBTLEWARE MAXIMIZES APPLICATION PORTABILITY
Subtleware is database independent. Your applications use the same
Subtleware API no matter which underlying database is being used.
Changing your database simply entails linking in another Subtleware
database support module to your application.
The Subtleware pre-processor converts C++ classes to relational database
C++ Class ------> Subtleware Pre-Processor -----> Relational Database Schema
The Subtleware SQLExec facility simplifies C++ access to existing
C++ Code <-------------> Subtleware SQLExec ----------> Legacy Data
The Subtleware schema mapper converts relational database schema to
Relational Schema -----> Subtleware Schema Mapper ------> C++ Class
OBJECT MODEL SUPPORT
Subtleware supports encapsulation, inheritance, containment, and polymorphism.
A C++ class is mapped to a table in a relational database. Each member
data variable (local, inherited, or contained) is mapped to a column in
the database table.
Subtleware provides a set of Subtle Pointer classes for persisting one-to-
one relationships between objects. Each Subtle Pointer class offers a
unique set of behavior regarding pointer chasing and referential
integrity constraints. Subtle Pointers "swizzle" associations into in-
memory pointers, speeding object traversal.
Subtleware provides a set of Subtle Collection classes for persisting N-
to-many relationships between objects. Each Subtle Collection class
offers a unique data structure abstraction.
CONCURRENCY CONTROL SUPPORT
Subtleware utilizes the data locking mechanisms of the underlying
relational database. Concurrency is specified by the database isolation
level or locking protocol in-use.
Subtleware supports transaction commit and rollback support. When a
transaction is committed, all Subtleware database operations are
performed. When a transaction is rolled back, all Subtleware database
operations are ignored.
DEVELOPMENT TOOL SUPPORT
Subtleware supports all major C++ compilers and development
environments. Subtleware works with any C++ development tool that
generates or uses C++ header files (class definitions) and offers
customized integration with Cadre's OT for Rumbaugh, allowing
developers to go straight from an object model to a running C++
FOR MORE INFORMATION
Subtle Software, Inc.
7 Wells Ave
Newton, MA 02159
Voice: (617) 558-4100
Fax: (617) 558-4103