Saturday, September 18, 2010

Whither ORM?

If you are scratching your head wondering why even after so many years there is still a confusing mix of ORM solutions, then you are not alone.

JPA/JDO/Hibernate/Spring/Mybatis/Cayenne - which one and why?

And if you are planning to write something on your own when there already are so many, then you should probably go read about NIH.

I'm actually amazed that even after the relative acceptance of NoSQL we are still struggling to standardize on ORM for SQL/RDBMS.

It's almost like a religious debate:
 - https://www.jfire.org/modules/phpwiki/index.php/Why%20not%20JPA
 - http://www.datanucleus.org/products/accessplatform/persistence_api.html
 - http://www.datanucleus.org/products/accessplatform/jdo_jpa_faq.html
 - http://www.dzone.com/links/search.html?query=jdo
 - http://www.dzone.com/links/search.html?query=jpa
 - http://java.dzone.com/articles/jpa-performance-optimization

Good old Apache itself has 2 solid implementations of JPA and JDO. Both seem very mature and very well documented:
 - http://db.apache.org/jdo/why_jdo.html
 - http://openjpa.apache.org/

Apache also has some offbeat/non-standard implementations. Some dead, some doing well:
 - http://cayenne.apache.org/why-cayenne.html
 - http://db.apache.org/
 - http://www.mybatis.org/ - formerly Apache iBatis

2 comments:

Christopher Wong said...

I'm not sure what point you are trying to make here, beyond the fact that there are multiple ORM implementations available. Oh, and Spring is not an ORM.

Ashwin Jayaprakash said...

Christopher, I'm not trying to make point.

This is a note to myself and my readers that time should rather be spent elsewhere, tackling better problems than re-invent the wheel.

I know Spring is not ORM, but it's so bloated that it seems to have an implementation for nearly everything in JEE while at the same time berating it for its complexity. Every tried reading the 805 page Spring 3 guide? :)

Cheers!