A typical problem will be to include heterogeneous persistence operations within one transaction. You can either to do that via JTA, configuring all involved tools to use transactional JNDI DataSources, or use the Spring Framework's generic transaction support. Spring comes with pre-built support for JDBC, Hibernate, JDO, and iBATIS Database Layer.
Spring also addresses a further typical issue: creating generic DAO interfaces. Besides transaction and resource management support, Spring provides a generic DataAccessException hierarchy, with pre-built conversion support for the above-mentioned persistence strategies.
If you're interested, have a look at the article
http://www.hibernate.org/110.html for an introduction to Spring in combination with Hibernate!
Juergen
(Spring Framework developer)