At last, I decided to apply DB4O to our project. One important reason is that this strategy lets programmers write code in high level. I don't need to care about any details of database infrastructure. As a result, modification of my original code is little so that it can be done quickly. Moreover, maintenance of code is easier. We store both data and related operations in database instead of scattered places. What's more, support of query is more powerful in DB4O than in Ehcache. It supports three kinds of query languages: Query By Example, Native Queries and SODA. And complex query can be composed easily.
by Gerald Guo
http://zhenhua-guo.blogspot.com/2008/03/state-information-persistence-status.html
And a simple db4o introduction by the same author:
http://zhenhua-guo.blogspot.com/2008/03/db4o-introduction.html