Login | Register
My pages Projects Community openCollabNet

Project home

2020-03-13: This site is going to be decommissioned and shut down very soon. Please copy and archive any data you wish to keep ASAP

If you were registered and logged in, you could join this project.

Summary Mies is a standards-based data composition framework
Category construction
License Other OSI-certified license
Owner(s) abworx, thhal
Mies - a Frameworx project

Mies is a data composition framework that provides a declarative approach to modeling data and behavior against JDBC or SQL data sources. Mies can be used as a standalone component or as a key element of a larger service-oriented application architecture.

What is there to know about Mies?


What is Mies?
Why does Mies exist?
What is the history of the Mies Project?
What is the scope and ambition of the Mies Project?
How does Mies relate to the Frameworx Project?

Functionality Scope

What exactly does Mies do?
What products or technologies are most comparable to Mies?


What functional units does Mies comprise?
What are the key technologies on which Mies depends?
What external components or systems does Mies require?


What are Mies's key benefits?

Legal and Stuff

How is Mies licensed?
Why is the Project called "Mies"?
Contact Project Owner

What is Mies?

Mies is a standards-based data composition framework. When used independently of the Louis O/R mapping framework, to which it is closely related, Mies supports declarative, visual composition and dynamic bi-directional modeling of data objects and behavior against any JDBC or SQL data source. Together with Louis, Mies provides a fully database independent O/R mapping package with unique functional flexibility and performance.

Why does Mies exist?

The flexibility provided by the combined Louis/Mies architecture allows elements of the O/R mapping system to be moved between database and J2EE tiers, or to be slotted in or out, as needed to meet performance and functional requirements.

Mies implements a separation of architectural concern that is typically missing in modern O/R packages. Most O/R mappers read all persistent objects into memory during run-time, which significantly impacts production performance and/or scalability, and may be unnecessary when the sole objective is to generate XML events directly from query results.

The Mies/Louis separates the O/R mapping domain into data access - which is implemented by Louis - and data composition - implemented by Mies. This gives developers fine-grained control and flexibility over when and how objects are brought into memory and eliminates many of the performance issues that have made O/R mapping impractical in high-volume production. In addition, Mies provides direct support for JDBC, which is a key requirement for many legacy environments.

Another benefit of the Mies/Louis architecture is that it allows declarative data composition to be slotted in directly on top of a JDBC or SQL data sources where database normalization and other capabilities provided by the Louis component are not required. (For example, populating forms with XML content rendered directly from the database.) Since Mies allows procedural logic (coded in Java) to be "plugged into" the data composition, and provides transactional closure, Mies-only use-cases can be highly functional.

What is the history of the Mies Project?

The Mies founding team has spent over a decade developing O/R mapping technology as the foundation of successive generations of application development frameworks. A key element of this evolving architecture was a declarative mapping between the information model and complex presentations of the model where data in master-detail relationships could be viewed and altered at multiple levels. We developed a construct we called a "composite object" to implement this objective. Composite objects are essentially "directed acyclic graphs" (DAGs), where each node maps to an object in the information model.

We found that composite objects, although originally developed for complex presentations, were also more broadly useful, enabling simplified and intuitive access to data during the development process, which was a useful construct for integration and a more performant approach to O/R mapping. And when XML emerged, we found that the composite construct provided the ideal mechanism for mappings between XML and information model data.

In these predecessor architectures, composites made direct use of proprietary information model objects (which were highly similar to JDO objects) that were tightly intertwined with the O/R mapper. When Mies was designed, we wanted composite objects to have dual interfaces using standard Java and XML. We also wanted to make composites transaction-aware, for which we were able to use standard J2EE transaction interfaces and JDBC as the underlying access mechanisms.

What is the scope and ambition of the Mies Project?

As a standalone project, the mission of the Mies Project is to create the most capable package for declarative development on top of existing data sources. In conjunction with the Louis Project, our mission is to create the most functional, flexible and performant O/R mapping package for developing service-oriented application on the J2EE platform.

How does Mies relate to the Frameworx Project?

Mies implements "layer 3" of Frameworx' six-layer Frameworx application architecture logical model, mapping "use-case control" logic to an information model and separating logical concerns of "data" and "application".

On its own Mies, provides a declarative approach to developing the data aspects of appliation development and completely eliminating the need for SQL or JDBC coding. Together with Louis, Mies provides a foundation for developing mission-critical service-oriented applications inheterogenous and disributed data environments.

What exactly does Mies do?

Key functionality provided by the Mies component includes the following:

  • Declarative, visual composition of bi-directional, use case-specific data objects on top of SQL, JDBC or J2EE data sources (via JCA).

  • Flexible mechanisms for handling value changes by reference, allowing a fine-grained, declarative approach to mapping between changes in composites and underlying data and specifying the consequences of changes in data or data structure.

  • Automatic, transaction-managed change closure, which efficiently saves all changes corresponding to committed transactions into a database.

  • Efficient mechanisms for high-performance "middle-tier" caching suitable for static data.

  • Automatic, optimized generation of any type of query statement.

  • Streamlined deployment using JMX bean properties.

What products or technologies are most comparable to Mies?

Functionality provided by Mies is typically provided by the more advanced O/R mapping packages, but without the separation of concern between data "access" and "composition" implemented by Mies. This typically results in loss of architectural flexibility and performance limitations. Moreover, direct support for JDBC is often.

Parallel functionality is also provided by leading commercial database vendors, which provide efficient mechanisms for automatic conversions of XML into and out of relational databases. However, these solutions are typically tied to the vendor's database, while a primary objective of Mies/Louis is database independence and support for heterogeneous environments.

A number of other open source initiatives that support query transformation into XML based on meta-data definitions managing the XML. However, these initiatives do not typically address the full problem-domain addressed by Mies.

What functional units does Mies comprise?

Mies comprises a standard J2EE runtime component and a visual editor for graphical or non-graphical data composition.

The editor is used to compose data directly from one ore more independent data sources, or indirectly from an information model, for presentation as a "directed acyclic graph" (DAG) that is represented as an XML document.

Where an information model is present, the Mies artifacts (Business Data Objects or BDOs), which can be described as a projection of the information model required for the supported use cases, serve as a facade for the much more extensive information model.

The runtime is built on JMX technology, and data sources and domains are configured using Java Management Bean properties. The run-time uses metadata created with the visual editor and exposes the corresponding classes through a standard class-loader initialized with a JMX Bean.

What are the key technologies on which Mies depends?
  • J2SE (version 1.4 or above)

  • Java Management eXtensions (JMX)

  • Java Transaction API (JTA)

  • Java Connector Architecture (JCA)


What external components or systems does Mies require?

Mies is designed to run in any J2EE application server environment. However, Mies can also run as a standalone component, provided that a JMX implementation is available. In addition, JTA must be present for implicit saves on transaction commit.

What are Mies's key benefits?

Flexibility and performance.

The architectural separation of concern Mies implements within the larger Louis/Mies O/R mapping package offers significantly improved efficiency compared traditional O/R mapping architectures by reducing the need for middle-tier caching.

O/R mapping system elements to be slotted in or out, or moved between database and J2EE tiers, to meet specific performance and functional requirements, relying on then native scaling capabilities of the database where overhead on the middle tier would be a performance bottleneck.

Abstraction and composition.

Mies' fully declarative data composition allows the creation of use case-specific data objects while completely eliminating the need to hand-craft SQL or JDBC code. Artifacts created represent fully bi-directional "live" representations of underlying data.

Direct support for JDBC allows data composition and mapping directly against a wide range of legacy data sources. Native ability to support Web services makes Mies a powerful tool in loosely coupled, distributed system integrations.

Mies support for both data composition and behavior definition enables the creation of complex system logic.

And Mies' ability to model and maintain arbitrarily complex data structures on top of existing data sources makes it suitable for projections with a volatile content structure and extends the lifecycle of existing data sources and new applicastions.

Separation of development concerns.

Mies implements a number of separations of concern in the application development process.

Information models, which need to support the requirements of many applications or even an entire enterprise, can be too unwieldy for the development of a given application. Mies allows developers to work with a projection of the information model that best fits the use-cases being developed in both extent and organization, while preserving the underlying structure of the information model in all respects.

In large or distributed development organizations, the ability to separate information modeling from business use-case development capabilities allows teams to focus on specific aspects of system development requiring specialized skill-sets - for example, object-oriented information modeling or business use-case specification - while preserving architectural coherence in the overall effort.

The application view of a system is separate from the technical implementation view. Application logic can be expressed in use-case-specific terms, closer to the conceptual models of a business domain than the underlying information model. Not only is this approach more intuitive for developers, it also ensures that changes to the overall information model do not affect the higher level of the applications.

Since application logic is isolated from the underlying information model, application developers do not need to know the finished information model before coding applications. A team can start with a partial information model, mapped to the BDOs they need. Integration with the complete information model for a component can occur at a later stage.

How is Mies licensed?

Mies, like other software initiated within The Frameworx Project, is available under "Apache-style" (BSD-based) licensing.

Why is the Project called "Mies"?

Like other projects originated by the Frameworx Project, Mies is named after a "famous dead architect". In Mies' case, this is Ludwig Mies van der Rohe, one of the great architects of the 20th century and the leading proponent of the "International Style" that dominated mid-century architecture. Mies attempted to create simple but elegant spaces through an architecture based on direct exposure of construction materials and structural elements. His widely quoted dictum, "less is more", captures the objective of the Mies Project.


Go Here!


Status & Roadmap


Design Overview

Developer Guide

Developer FAQ

Use Cases

White Papers


Try it!

Founding Team

Thomas Hallgren
Founding Architect & Developer

Pontus Rydin
Architect & Developer

Henrik Lindberg
Architect & Developer

Related Topics

Coming soon