your comparison is a little incorrect
I agree. Comparing CMP/JDO/JDBC is like comparing a car, its direction system and its engine. You can say that an engine alone performs better than a whole car for some purposes, but you won't find easy to drive along a road with an engine.
JDO uses byte enhancements that injects JDBC code
More accurately, JDO uses bytecode enhancements to transparently track accesses (read/writes) to
Java objects. JDO doesn't not always imply JDBC.
in CMP the app server uses JDBC to make its database calls
Most of the time, yes, but rather indirecly. Actually using CMP means asking the
EJB persistence service to manage entity bean persistent state, whatever this persistence service could be (JDBC code, JDO, Hibernate, or anything else). For instance the Borland Application Server CMP provided a pluggable persistence service. But, indeed, almost all of CMP implementations use their own plain JDBC persistence service.
so in all cases you are already automatically using JDBC
No, JDO (or even CMP strictly speaking) is not required to use JDBC. Indeed, various JDO implementations support more persistence APIs than JDBC.
Even all the ORM produce JDBC calls to call the database.
Yes, because R mean Relational. But I would not put JDO nor CMP into the ORM box.
Yes if the data is stored in straight files rather than an RDBMS you can avoid JDBC, but then Hibernate is the only way that the "model" stays the same and can save the objects to the flat files
False. JDO allows this -- and is designed to -- typically.
[ August 31, 2004: Message edited by: J�r�me Beau ]
[ August 31, 2004: Message edited by: J�r�me Beau ]