I've been using ObjectDB in my early experiments with JPA, but it's time to get serious. A major weakness of ObjectDB is that it doesn't have a PHP binding, so to generate the Web interface, I'd have to either set up Tomcat and use servlets, or run Quercus on Resin. I prefer to stick with plain old Apache and PHP5, so I'm switching to Apache OpenJPA and PostgreSQL. The combination takes a bit more setting up than ObjectDB, but it'll be easy now that I know how to do it. It took me about four hours to go from zero to a running test project with enhanced entity classes.
I chose PostgreSQL over MySQL because of its permissive licensing. One of the advantages of JPA being a standardized API is that if I ever decide to distribute the game server, people will be able to use it with whatever JPA implementation and database they prefer. But OpenJPA and PostgreSQL are one of the few combinations that I could distribute with my programs, fully configured and ready to run. Also, PostgreSQL has the best mascot:
I've put the protocol library under the Apache license. At least, that's its categorization on SourceForge; I haven't put the license notices in the files yet. If someone wants to use it in a commercial client, more power to them.