It is always interesting for me to look at debates about object relational layers. I propose we define different levels of object relational support:
Things get fuzzy, though. It is sometime unclear the difference between 2.2 and 3.1 and various creative solutions can be hard to classify. But in a general sense, this classification is probably about right. In a generic sense EJB1.1-2.0 is a 2.2, EJB3.0 is a 3.1, JDO is 3.2 (if you don't consider post-compilation) and ObjectSpaces is a 3.2. Hibernate and Toplink are squarely 3.2.
But do you really need to go all the way to 3.2? All the times? I'll try to post more about trade-offs in all these solutions, but if you have an idea of a better categorization, please let me know. The one I propose is right out of my head and I'm not to happy about it either.