Login | Register
My pages Projects Community openCollabNet

Louis Design Overview

Metadata constructs

Louis includes a Meta Data Repository (MDR) where UML models are stored in XML Metadata Interchange (XMI) format. Louis does not currently provide the UML editors, per se, allowing developers to work with the UML editor of their choice. Special purpose editors are planned for future development.

A complete mapped model consists of three parts:

  • Information Model, which is the normalized Object Relational Schema. It models extents, classes, inheritance, relationships, and constraints.

  • Mapping definition, which describes how the Information Model is mapped to a Data Model.

  • Data model, a vendor-agnostic model that is completely expressed in relational database terms, such as tables, columns, primary and foreign keys, constraints, and triggers.

One Information Model may have several mappings, resulting in several Data Models. The reverse is also true.

Runtime component

The Louis runtime component is invisible to the normal user. It is used in the same way as any other JDBC driver. It can be seen as a bi-directional JDBC wrapper.

Dynamic OQL parsers are responsible for parsing all queries and generating an execution plan. The generation has several steps.

  1. Parsing the query into an expression tree. This involves scanning it for syntactic correctness and to resolve all identifiers using the Object Relational Schema.

  2. De-normalizing the expression tree so that all multi-hop navigations (i.e. x.y.z) are resolved into appropriate joins and single hop navigation (i.e. y.z from x outer join y).

  3. Transforming the expression tree according to the mapping specification, i.e. transform into joins, unions, multiple inserts, etc.

  4. Generating an SQL query string(s) using vendor specific constructs.

  5. Passing the query for parsing by the underlying database to obtain the native statement(s) needed for the execution of the query.

The execution plan can either be a "one shot" that is executed directly, or it can be prepared, saved, and then executed repeatedly.

A Query Transformer will convert query parameters according to the generated execution plan and pass them to the native statement(s) prior to execution. It will also, as needed, create a wrapper for the result that performs similar conversions on the query result.


Louis is delivered with a set of tools to simplify metadata generation and management, including the following:

  • Default mapper generator: Generates a default mapping from an Information Model.

  • Database deployer: Creates and initializes a database from a Data Model.

  • Data Model extractor: Extracts a Data Model from a database.

  • Reverse mapper generator: Generates a default mapping and an Information Model from a Data Model.

Supported databases
At present, Louis has built-in support for the following databases:
  • Oracle

  • DB2

  • SQLServer

  • PostgreSQL

A layered approach with extremely good separation of concern makes it very easy to add new databases.