Hi all! I' have been using Ojb persistence broker, for almost 4 years. I think it's not necessary to say what a great framework it is, as everybody in this list, surely experimented it.
I wrote a very generic DAO to make the must common access to the database, as create,read, update and delete (CRUD). In this DAO there are a lot of methods that can be useful for the most purpose in an application. This DAO make very easy the use of Ojb, as the details of using Ojb are hidden in the DAO implementation. So the user doesn't need to mind about get a persistence broker, begin and commit or rollback a transaction, and there are methods that use in a more advanced way Ojb using his apis, and expose to the user just methods that do many think (in a Facade way). I made a small framework called Mandragora, http://mandragora.sourceforge.net/ , that use this DAO. The framework is very easy, there is a small documentation, and I'm trying to complete it as quick as I can. With mandragora you don't need to access the DAO directly, but they are exposed to a Business Delegate manager class, that can be accessed directly by the user. The manager business delegate class expose to the Mandragora user lots of methods that use DAO apis, to make more complicated methods as to make simple operations. So using Mandragora you a have available a set of very powerful methods to operate on value objects. These methods deal with making hard manipulations or tranformations, or building structures of valuobjects, or reading and storing complex structures. To make an idea of how is to work with it just put at the beginning of your method BD bd = ServiceLocator.getInstance ().getManagerBD("BDFactoryDefaultClass","StandardBDDefaultClass"); then you can do for example MyValueObject myValueObject = (MyValueObject ) bd.findByPrimaryKey( MyValueObject.class, myArrayOfKeyValues) If you have a class CarVO whose keys are name, and model, just do: CarVO fordfocus = (CarVO )bd.findByPrimaryKey(CarVO .class, new Object[]{"focus","ford"}); or bd.insert (fordfocus ); I hope this can be useful to someone. Thanks for your attention. Regards Alessandro Colantoni