After battling some days with JPA at last it now works. There were some hours when I thought going back to plain Hibernate. Trying the JPA implementation from Glassfish (the Oracle sponsored Toplinks essentials) which didn't work and some problems with KODO (from BEA), I got the application working with Hibernate JPA. What bothered me was the JBoss common jar which is needed for Hibernate JPA. In the future I hope to get the other JPA implementations working to get some performance numbers.
The current players in the JPA field are KODO (which partly is open sourced as Apache OpenJPA), Apache Cayenne, Hibernate, Toplink and JPOX. KODO, Hibernate and Toplink look good, OpenJPA and JPOX have a lot of momentum. The days of the dominating Hibernate ORM may be over. We'll see which one will become the next Hibernate (or is it Hibernate3 ?).
JPA seems to be a nice solution, standardized object persistence in databases. JPA will bring to ORMs what JDBC brought to databases. Mix and plug. Choose the best for your job. Somehting the other backend API for Java, JCR, is still far away from. I hope people move up the abstraction stack from JPA to JCR and JCR will became as successfull as JPA in the long term. Go, migrate to JPA!
PS: Changing the application at the same time to JPA, Spring-JPA and H2 as a database was - as usual - a bad idea. But developers from time to time become overconfident and think of themselves as super heros. Next time I'll change only one technology a time again 🙂