What is exactly your problem (your question is not clear) ? Do you want to avoid duplicating Bodega() objects, i.e, when you store a new Vinos object you do not want to store another Bodega() object if one exists with bodegaName änd DO ? If this is what you are...
java,mysql,hibernate,db4o,object-database
Not all the object databases are equal, some are faster and some are much slower. Since you mentioned JPAB, you should also check other pages, e.g. http://www.jpab.org/Hibernate/MySQL/server/ObjectDB/ObjectDB/embedded.html But also consider that the page that you mentioned shows that the combination of DataNucleus with db4o is extremely slow. It says nothing...
That is not weired, but the default implementation of the toString() method. To get meaningfull information you should override this method in your Student class.
why dont you make some method to check with exception and try putting inside try ... catch ... block and catch (for example) public bool Checkdb4oFile(string fileName) { try { using (IObjectContainer container = Db4oFactory.OpenFile(fileName)) { // do nothong; } return true; } catch { return false; } } ...