Resoa Persistence

What is Resoa Persistence?

Resoa Service containers offer a generic interface org.resoa.grid.ResoaPersistence for easy persistence of JSON/Java service objects within a Resoa gateways. This project provides an implementation for BTREE storage solutions and relational databases.

If you follow the idea “First comes database design”, Resoa persistence is not a solution for you. Resoa architecture puts its focus on XSD (or any other tool based) generated service object models, you can use for the full workflow from JSON based web application to the persistence back-end. There is no need to maintain  two separated object models anymore!

Is Resoa Persistence another JPA implemention?

No. Resoa persistence grew up in 2008 with the idea of a JSON/Java object persistence, using BTREE databases (key/value) for performance reason only. As we understood the main advantage of relational databases in the handling of relations between objects, we integrated this idea within the BTREE object persistence. The JSON representation of object relations is replaced by the object key on the fly, the persistence of the related objects happens automatically following very simple relation options (CREATE ONLY, CREATE/UPDATE).

Beginning with resoa.persistence version 2.0, the direct persistence of JSON to relational database management systems is supported as well. We evaluated a lot of platforms, we thought about Hibernate integration, about DataNucleus – but: all those ideas would have forced us to leave the path “First is the service, and NO more maintenance of two object models”.

So we kept the simple XML based declaration of object relations, and faced the headache of the automatic mapping of Java object models to a relational database tables, knowing, that a 100% solution is not possible. But 100% mapping of complex XSD to relational database is not necessarily a requirement of many projects, so if you keep your XSD/Java service  model clean (avoiding circularity, etc), Reosa will provide a nice solution for relational database persistence of Java/JSON objects.