File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
The moose likes JDBC and Relational Databases and the fly likes David and Craig - Your favorite JDO vendor? Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Databases » JDBC and Relational Databases
Bookmark "David and Craig - Your favorite JDO vendor?" Watch "David and Craig - Your favorite JDO vendor?" New topic

David and Craig - Your favorite JDO vendor?

Lasse Koskela

Joined: Jan 23, 2002
Posts: 11962
I've been silently following how JDO vendors have announced implementations during the past year(s) but haven't really had the time/will to try JDO for real.
Assuming I was to test JDO on a small personal project (a classical web-based cd/dvd/book library program), which product would you suggest? It has to be free for at least non-commercial use, but preferrably for commercial use as well as I wouldn't want to have to learn two products' differing precompilers and other supporting tools.
I know of TJDO (open source) but I've also heard it's not "quite there yet" (can't remember the exact reasoning).

Author of Test Driven (2007) and Effective Unit Testing (2013) [Blog] [HowToAskQuestionsOnJavaRanch]
John Dove

Joined: Jun 04, 2003
Posts: 4
Hi All,

Just for starters, can we define what JDO is?
E.g., not what its acronym stands for, but rather what "is it?" What does it do? I'm not familiar with it yet but am curious to know.
Best Regards,
John Dove
Mike Farnham
Ranch Hand

Joined: Sep 25, 2001
Posts: 76
JDO - Java Data Objects
Defines the Persistence Interfacing for interacting with the datastore. The datastore appears to be able to be:
1. a filestore (serialized objects)
2. a relational database
Whatever class/object instance you want to persist only has to supply an empty constructor. After your class has been compiled, you then run the "enhancer" which creates modified byte code that is actually used by your application. The modified byte code contains the necessary hooks for the specific implementation you are using.
Hence the question about which implementation to use.
I think it has been hinted at that whatever commercial vendor it is their implementation will work best for their product, much like WebSphere is optimized for DB2 as opposed to Oracle. Not that you can't use WebSphere with Oracle.
You can read Chapter 1 of Java Data Objects at the O'Reilly site.
David Jordan
Ranch Hand

Joined: Jun 14, 2003
Posts: 66
All enhancers are required to support standard reference enhancement, which is binary compatible across all JDO implementations. Vendors can add their own additional enhancements, but these should not be visible to other JDO implementations. So the bytecode enhancements are not considered vendor-specific. This has already been covered elsewhere on Java Ranch today.
Rama Raghavan
Ranch Hand

Joined: Aug 22, 2001
Posts: 116
Can JDO be used for LDAP Directory stores as well.
ie. Does this api/vendor impl support LDAP Directory stores, or is JDO strictly for relational data stores..

Rama Raghavan<br />SCJP2<br />SCWCD
David Jordan
Ranch Hand

Joined: Jun 14, 2003
Posts: 66
JDO implementations are essentially datastore specific. The relational JDO implementations primarily use JDBC to talk to the database, but then they also have database specific logic to handle variations in SQL DDL and DML.
A JDO implementation for an object database would use the underlying object database calls.
Using JDO insulates you from whether you are using an object, relational, or any other form of datastore. But to use JDO with a particular kind of datastore, like an LDAP datastore in your case, it all depends on whether someone has implemented JDO for that datastore. Someone at JavaOne told me he was real interested in doing JDO for LDAP, so it may make sense. But I am not aware of anyone that has this implemented already. Over time I suspect you will see more and more different kinds of datastores provide a JDO layer that allows an object-level access to the data. You can imagine for some implementations they would provide you with both the persistent Java classes and their JDO implementation so that they could provide you with an object-level, Java centric view of their information. This would be a specialized JDO implementation that would not allow you to define your own object model, but would use the JDO API and a fixed Java object model as the basis for their interface.
I agree. Here's the link:
subject: David and Craig - Your favorite JDO vendor?
jQuery in Action, 3rd edition