Throughout 2007, IBM's DeveloperWorks site has published a series of articles describing how to work with db4o. Collectively known as “The Busy Java Developer's Guide to db4o,” written by Ted Neward, principal, Neward & Associates, the series has now been concluded via a new article on transaction security.

Embedded Linux developers who use Java are increasingly using the open source, object-oriented db4o for mobile device development. One of the key reasons for the growing popularity of this “retro” pure-object database, says Neward, is that relational databases such as Oracle, SQLServer and DB/2 still do a bad job of handling the objects that are implemented in languages such as Java code, C++, and C#. The reason, he argues, is that despite “object enhancements” to relational databases, they still use a fundamentally different approach to data management.

This “object-relational impedance mismatch,” says Neward, is too deep to adequately work around with the usual manual mapping techniques. The key question centers, metaphysically enough, on an issue of identity. “Objects have an implicit sense of identity (denoted by the hidden/implicit this pointer or reference, which is essentially a location in memory),” he writes in the introduction, “whereas relations have an explicit sense of identity (identified by a primary key made up of the relation's attributes).”

The seven articles that comprise “The busy Java developer's guide to db4o” offer extensive code samples to describe how to build a single db4o application. The following gives a brief summary of each article:

Introduction and overview — Why object databases like db4o are different from relational databases, and why you might need one.

Queries, updates, and identity — db4o doesn't support SQL, but it offers alternative query mechanisms, such as Query by Example, that can be easier to use, says Neward.

Database refactoring with db4o — Refactoring in a relational database is usually a major struggle, says Neward, but db4o simplifies refactoring to the point where it's almost trivial.

Beyond simple objects — When simple objects become structured (objects that reference objects) db40 can get trickier. Neward explains how to deal with issues such as infinite recursion, cascading behavior, and referential integrity.

Arrays and Collections — A follow-on to “Beyond simple objects,” this article continues the exploration of structured object handling with a look at multiplicity relationships, where objects hold collections of objects as fields.

Structured objects and collections — How to work with concepts of inheritance to categorize and organize objects within a given system, and using inheritance as a core feature when creating queries.

Transactions, distribution, and security — This final article in the series shows how db4o handles three concerns central to Java enterprise development: transactions, distributed data management, and Web application security.