I worked with Ibatis and Hibernate. Ibatis is simple and simple. Hibernation can become difficult if you are not careful, but it is a lot for you. spring-jdbc is better than the original JDBC.
Hibernate's greatest advantage is the ability to map different databases. You can even disable schema prefixes. You have options such as using the in-memory database for testing, or if the developers have local databases other than the target product (for example, if you target Oracle and the licenses target the problem) or the ability to target multiple databases . Sleep id generator easily with hibernate. With Hibernate, native SQL is an option, but with Ibatis there is no choice.
It is also not possible to save Ibatis DRY display files. If you have multiple requests with different offers, you will get cut-n-paste. With Hibernate, there is almost no such duplication.
Both Ibatis and Hibernate, by the way, have a declarative caching mechanism. Of course, sleep mode is much more involved.
spring-jdbc shares all the flaws I listed for Ibatis. Also, I don't think it has a caching mechanism. its main advantage is that JDBC objects are not so well hidden, so you can directly access them more easily if you need it.
Spring integrates with all three alternatives; spring support is no different.
One more thing: Hibernate works great with artificial keys. He can manage composite business keys, but he works a lot more. Ibatis and spring -jdbc are not complex enough to solve this problem.
If your developers are cautious and thorough, and if you can simplify your approach (for example, using a session per request, not saving any objects from one session to another and using artificial keys), then go to Hibernate. If you decide that you don’t need the database abstraction that Hibernate provides, or if you don’t trust your developers with sharp tools, go with Ibatis. Keep spring-jdbc as a recession to make specific requests that need to be configured with jdbc using bare metal.
By the way, Grails and GORM make Hibernate much easier to experiment because there is much less time to install, Grails launches you using a database in memory, and you can do without writing map files.