Do I have an application that can benefit from an object model, where I can benefit from representing my model as a set of inter-related
Java classes that require a lot of Java computations? If so, use JDO.
Do I have a data model and transaction mix that are a great match for expressing everything in SQL, with no real need to represent data in my application? Do I make use of advanced SQL features like union, group by, etc. If so, use JDBC.
If I need each individual object to be accessible remotely in the network, then I would consider EJB, though there are also other technologies that can also be used.
The general concensus in much of the EJB community is that
you should have remote applications only interact directly with session beans, let the session beans have the direct interactions with the entity beans. This is largely done for performance reasons. But if you end up having a session bean interact with entity beans that are local in the same EJB server, using JDO objects instead of entity beans is definitely going to be simpler and will likely have better performance.