The other day I was at a bar talking to a friend about Entity Beans CMP. We both agreed that, today, this ORM model is crap. But he said, at the time it was created, it was the best we could do In general I would agree with that. We can’t say that the plane of the Wright brothers was crap. Compare with today, it is, but at the time, it was revolutionary. Were Entity CMPs revolutionary ? No, because it wasn‘t the very first ORM model. There was TopLink before. Here is a brief history of ORM
- 1994 : The product TopLink for Smalltalk was sold
- 1996 : a Java version of TopLink was added to the product line, named TopLink for Java.
- 1997 : 3M was the first company to officially buy TopLink for Java.
- 1999 : TopLink for Java receives a Java Report award
- 1999 : TopLink for WebLogic was developed and based on POJOs
- 1999 : The JSR 19: Enterprise JavaBeans 2.0 specification is initiated
- 2000 : JSR 12: Java Data Objects specification is initiated
- 2000 : After the joint acquisition of The Object People in April 2000 the consulting (non-TopLink related) division was sold to BEA, and TopLink was sold to a new startup called WebGain.
- 2001 : The JSR 19: Enterprise JavaBeans 2.0 is released in september 2001
- 2001 : The JSR 153: Enterprise JavaBeans 2.1 is started (bringing Web Services support and a Timer Service).
2002 : Final Release of JDO 2003 : Final Release of Enterprise JavaBeans 2.1 specification
To resume, TopLink for Smalltalk was created in 1994. The Java version was created in 1996 and the Entity Bean 2.0 specification was released in 2001 (quickly the 2.1 was released in 2003). 5 years separate these two models. Reading the brief history of TopLink who had been bought several times, we notice that there is a commercial dilemma between these two models : TopLink is not CPU based.
We (TopLink) had partners like BEA and Digital River who were used to selling application servers and middleware in a very specific way – per CPU. They wanted to bundle TopLink and use the same model. They couldn’t manage the nuances of developer based pricing and wanted to bundle and sell TopLink just like any other middleware.
Easy to sell CPU based license when you are called BEA and that your container runs on CPUs. TopLink does POJOs, can‘t sell that very well.
JDO arrived nearly at the same time. The first version in 2002. Remember that Entity Beans 2.0 were released in 2001 but not usable (they were remote). The 2.1 spec arrives in 2003, one year after JDO. JDO was inspired by TopLink but most of the big players were not part of the JSR.
So, Entity Beans were definitely not the first ORM model. They arrived at a time where application server were expensive (JBoss was only created in 2001 and became a corporation under the name JBoss, Inc. in 2004) and software companies such as BEA, IBM, Oracle or Sun made money out of licensing. Entity Beans needed an expensive container (license were CPU-based for development, integration, production environment) while the TopLink POJO model had a per-product license.
Technically TopLink and JDO were far in advanced… but Entity Beans won the battle commercially… but only for a few years : 2002 arrived Hibernate !