Search code examples
jdodatanucleus

Is DataNucleus the successor to Kodo JDO?


I have inherited 15+ year old JEE application which uses a long-since unsupported persistence layer called Kodo by Solarmetric (v4). Solarmetrics was then bought out by BEA which was then bought by Oracle. Support for this persistence layer has long since stopped, and I am relying on 15+ year old technology to power the entire application.

I am looking to change the persistence implementation. From what I have been able to deduct, Kodo is based on the JDO spec (but not entirely certain which version).

To replace the technology with Hibernate or a pure JPA solution would be nightmarish - too much of the logic baked into the application relies on the JDO entity Id.

Instead, I'm looking to see if I can more easily upgrade/replace with a more current JDO implementation, such as DataNucleus.

Does anyone have any experience/success stories in upgrading such an old technology to something more recent. Is DataNucleus backwards compatible with something as old and unsupported as Kodo? Has the JDO spec changed significantly enough since 2005 such that an implementation based on 2005 would be require a large rewrite to support the 2018 implementations?


Solution

  • DataNucleus is an independent (open source) implementation of JDO (and JPA too for that matter). It started life as TJDO, then became JPOX (and became the reference implementation for JDO 2.0), before changing its name to DataNucleus in 2008. It is still the reference implementation for JDO (JDO2.0, 2.1, 2.2, 3.0, 3.1, and 3.2).

    It currently implements JDO 3.2, which is way more advanced than anything Kodo ever supported (they did JDO 2.0, before Oracle shafted anybody who used it by abandoning it). People have upgraded JDO applications to use DataNucleus from other JDO providers with success, but the answer to that question depends on whether you have used vendor extensions of Kodo. Of course DataNucleus is also open source (unlike Kodo) so you are protected from being held ransom by companies and can contribute fixes if you have problems.

    JDO has been expanded significantly since JDO 2.0 (what you use), adding on annotations, type safe queries, many many more query methods, as well as other features. All releases of JDO are intended as backwards compatible from what I remember. Go look at the Apache JDO website and the DataNucleus docs to see what has changed in JDO.