Introduction
There are many ways one can go about persisting the state of a Java program. A few examples are:
- Relational databases (e.g., MySQL) in combination with object–relational mapping
- Graph databases (e.g., Neo4j) in combination with object-graph mapping
- Document-oriented (NoSQL) databases (e.g., MongoDB)
- Object-oriented databases (e.g., Perst)
- APIs such as the Java Persistence API (JPA) or Java Data Objects (JDO) and respective implementations (e.g., ObjectDB, EclipseLink, DataNucleus).
- Standard Java Object Output and Input Streams
- Serialization into XML or JSON (e.g., Jackson)
Each method has its advantages and disadvantages. For certain use-cases, none of the above options can offer an ideal solution.
Goal
The goal of this project is to implement a framework for transparent persistence of arbitrarily complex object graphs in Java.