Apache
MetaModel

 

Apache MetaModel is a data access framework, providing a common interface for exploration and querying of different types of datastores.

Datastore types

MetaModel isn't a data mapping framework. Instead we emphasize abstraction of metadata and ability to add data sources at runtime, making MetaModel great for generic data processing applications, less so for applications modeled around a particular domain.

With MetaModel you get a uniform connector and query API to many very different datastore types, including: Relational (JDBC) databases, CSV files, Excel spreadsheets, XML files, JSON files, Fixed width files, MongoDB, Apache CouchDB, Apache HBase, Apache Cassandra, ElasticSearch, OpenOffice.org databases, Salesforce.com, SugarCRM and even collections of plain old Java objects (POJOs).

News

  • 2014-11-37 New TLP infrastructure available - Updated mailing lists, git repository location, website.
  • 2014-11-24 New release 4.3.0-incubating - Introducing ElasticSearch and Apache Cassandra modules.
  • 2014-11-20 Graduation resolution accepted
  • 2014-10-13 New Committer: Alberto Rodriguez
  • 2014-07-28 New release 4.2.0-incubating - Introducing JSON file module. Made column data types pluggable.
  • 2014-06-30 New Committer: Tomasz Guzialek
  • 2014-05-11 New release 4.1.0-RC1-incubating - Introducing Apache HBase and Spring Framework modules.
  • 2014-01-27 New release 4.0.0-incubating - Updates to naming of file-based schemas and migration towards Apache namespace.
  • 2013-06-12 Project enters incubation.

Download

Maven dependency

Apache MetaModel is also distributed through the central Maven repository. Here's your typical <dependency> declaration:

<dependency>
  <groupId>org.apache.metamodel</groupId>
  <artifactId>MetaModel-full</artifactId>
  <version>4.3.0-incubating</version>
</dependency>

Source code

The source code for Apache MetaModel is available through this Apache Git repository:

https://git-wip-us.apache.org/repos/asf/metamodel.git

Mailing lists

To get involved with Apache MetaModel, start by joining our mailing lists and engage in the conversations!

Name Subscribe Unsubscribe Post Archive
Developer List Subscribe Unsubscribe Post mail-archives.apache.org
Commits Subscribe Unsubscribe Post mail-archives.apache.org

Contributing

Please refer to our CONTRIBUTE.md file for details on contributing to Apache MetaModel.

Issue tracking

Issues for Apache MetaModel are tracked through this Apache JIRA system:

https://issues.apache.org/jira/browse/METAMODEL

Examples

Query with MetaModel

With MetaModel you use a type-safe SQL-like API for querying any datastore:

DataContext dataContext = DataContextFactory.create[TypeOfDatastore](...);
DataSet dataSet = dataContext.query()
    .from("libraries")
    .select("name")
    .where("language").eq("Java")
    .and("enhances_data_access").eq(true)
    .execute();

The MetaModel query API allows you to use the power of SQL, even on data formats such as CSV files, Excel spreadsheets, NoSQL databases and more.

Update with MetaModel

MetaModel lets you do CRUD operations on arbitrary datamodels, also in a type-safe manner. Batch updates and transactions are logically modelled as UpdateScript closures.

dataContext.executeUpdate(new UpdateScript() {
    public void run(UpdateCallback callback) {
        // CREATE a table
        Table table = callback.createTable("contributors")
            .withColumn("id").ofType(INTEGER)
            .withColumn("name").ofType(VARCHAR).execute();
            
        // INSERT INTO table
        callback.insertInto(table)
            .value("id", 1).value("name", "John Doe").execute();
        callback.insertInto(table)
            .value("name", "Jane D.").execute();
        
        // UPDATE table
        callback.update(table).value("name","Jane Doe")
            .where("id").eq(2).execute();
        
        // DELETE FROM table
        callback.deleteFrom(table).where("id").eq(1).execute();
    }
});

The rest of the API should reveal itself through using the DataContext! Javadocs, wiki, mailing lists and other resources help too of course, so check them out.

Wiki

Check out the MetaModel wiki for more in-depth examples and documentation.

Heritage

MetaModel was initially developed and released by Human Inference since 2011. In July 2013 MetaModel joined the Apache Incubator and in November 2014 MetaModel graduated to become a Top Level Project (TLP) of The Apache Foundation. It is licensed under the Apache 2.0 license.

Copyright © 2014 The Apache Software Foundation - Licensed under the Apache License 2.0. Apache MetaModel, MetaModel, and the project logo are trademarks of The Apache Software Foundation