Skip to content
OrientDB Java O/G mapper for play! framework 2.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

What is Origami?

Origami plugin is a Java O/G mapper for the OrientDB with Play! framework 2. It maps annotated model classes to ODocument classes of the OrientDB with mapping functionality.


  • Object-Graph-Mapping of annotated model classes based on Object Oriented Inheritance(src)

  • Support for both Java and Scala Project (Both Scala models and Java models are supported)

  • Support for both the embedded and remote OrientDB

  • Auto-reloading support

  • Support to enables to customize the format of Model Id (src)

  • On only embedded OrienDB:

    • Support to enables to use the OrientDB Studio

    • Support to enables to make the database directory of the embedded OrientDB a zip file when your application just starts up.



  1. Install Play framework 2.2.1 and Java 5 or 6, 7

  2. Executing the command

    % git clone

  3. Publishing Origami to your local repository

    % cd play21-origami-plugin % play publish-local

Running sample application and Usage

At a command prompt, type the following commands:

     % cd play21-origami-plugin
     % cd samples
     % cd origami-simple-app
     % play run

There are basic usage in the source code of a sample application.

Facade Class for OrientDB

The com.wingnest.play2.origami.GraphDB class is a Facade class.

  • GraphDB.close()
  • GraphDB.begin()
  • GraphDB.commit()
  • GraphDB.rollback()
  • GraphDB.asynchQuery()
  • GraphDB.synchCommand()
  • GraphDB.synchQuery()
  • GraphDB.synchQueryModel()
  • GraphDB.findById()
  • GraphDB.findDocumentById()
  • GraphDB.documentsToModel()
  • GraphDB.documentToModel()
  • GraphDB.getDocumentsByFieldName()

Abstract Model classes

Both classes extends com.wingnest.play2.origami.GraphModel.

Annotatins for O/G mapping

For Models

####@Index Defines one or more indexes.


     public class A extends ... {
        @Index(indexType = OClass.INDEX_TYPE.UNIQUE)
        public String email;     

        @Index(indexType = OClass.INDEX_TYPE.NOTUNIQUE)
        public String name;     

####@CompositeIndex Defines one or more composite indexes.


    public class A extends ... {
        @CompositeIndex(indexName="ci_1", indexType = OClass.INDEX_TYPE.UNIQUE)
        public String attr1;     

        public Integer attr2;

####@SmartDate Defines one or more attributes to set the saved time automatically.


    @SmartDate(dateType = GraphModel.SMART_DATE_TYPE.CREATED_DATE)	
    public Date createdDate;


    @SmartDate(dateType = GraphModel.SMART_DATE_TYPE.UPDATED_DATE)
    public Date updatedDate;    

####@DisupdateFlag If you don't want to update by @SmartDate, set its attribute true.


    public boolean disupdateFlag =  false;

####@javax.persistence.Transient Defines one or more attributes as transient attribute.

####@javax.persistence.Id Defines one attribute as id attribute.

####@javax.persistence.Version Defines one attribute as version attribute.

For Controllers (Only Java Project)

####@Transactional The @Transactional annotation enables annotated Actions and/or Controllers to rollback and commit by GraphDB.rollback() and GraphDB.commit(). If a controller is annotated by @Transactional, its all actions are turned into transactional.

####@WithGraphDB The @WithGraphDB annotation enables annotated Actions and/or Controllers to use OrientDB implicitly.

Known Issues


Origami is distributed under the Apache 2 licence.

You can’t perform that action at this time.