Hi! Good job starting the discussion. Based on your arguments I also see EclipseLink as the best solution. I also found one more argument for using EclipseLink - it supports multi-tenancy: https://www.eclipse.org/eclipselink/documentation/2.7/solutions/multitenancy.htm#CHDBJCJA
Juhan Kontakt Ebenezer Graham (<[email protected]>) kirjutas kuupƤeval E, 1. juuli 2019 kell 07:09: > Hello Devs, > > I have started this thread to discuss the JPA implementation to adopt as > we work towards making Fineract CN Apache compliant as well as to ensure > that we are all aligned as a community. > > I am currently working on the migration to OpenJPA as my GSoC project. > However, a number of red flags as well and requests from other community > members has made it critical to start this thread. > > As most of you know, we can't use Hibernate as it's not compliant > therefore, it's essential that we migrate to an equally good ORM. > > *Our options:* > 1. EclipseLink - EPL 1.0 & BSD > 2. OpenJPA - Apache 2.0 > 3. DataNucleus - Apache 2.0 > > Not recommended > 4. iBatic - Apache 2.0 (still functional but retired > https://ibatis.apache.org/) > 5. TopLink - CDDL (category B license, and simply extend EclipseLink) > > I used the following criteria in the following order of priority. > 1. License > 2. Implementation's performance with respect to PostgreSQL > 3. Support in Spring as well as ORM Documentation > 4. Project Maturity > > Right off the bat, I suggest the adoption of EclipseLink > <https://wiki.eclipse.org/EclipseLink> based on new insights discovered, > re-evaluation of our options, and compatibility issues discovered whiles > migrating to OpenJPA. > > *Why EclipseLink? * > According to JPA Performance benchmark - > http://www.jpab.org/All/All/All.html EclipseLink is the Most Efficient > ORM (amongst our valid options) when persisting to PostgreSQL and even > outperforming Hibernate. > > Performance Summary (with respect to Postgres) > EclipseLink - 10.5 > Hibernate - 9.1 > OpenJPA - 6.5 > DataNucleus - 6.0 > > *Issues with OpenJPA.* > 1. Spring dropped support back in 2017 and requests to resume support was > declined earlier this year > https://github.com/spring-projects/spring-framework/issues/20584. There > is no guarantee when it will be back in newer versions of Spring. Spring 5 > for instance no longer includes the OpenJpaVendorAdaptor. Therefore, future > upgrade of Fineract CN will become an issue. > > 2. OpenJPA has been lagging behind - the stable version for spring > supports up to JDK 1.6 (although v3.0.0+ is working to resolve this issue). > > 3. Bugs and compatibility issues with other libraries. I have first-hand > experience with it and it's not pleasant. > > *Why not DataNucleus?* > It is not supported in Spring 4.x and its implementation will require us > to completely heavily refactor the JPA Layer in Fineract CN on top of that, > it's the slowest. > > Looking forward to your recommendations and your own evaluations. > -- > > *Regards* >
