В основном использую Hibernate, но не нравится то, что я теряю контроль над запросами. За то время, которое тратится на приведение запроса к удовлетворительному виду, проще этот запрос написать вручную, тем более что зачастую есть люди, которые эти запросы умеют писать лучше прикладного программиста. Про переносимость между базами и простоту создания простых программ понимаю, но реально база обычно одна, а программы сложные.
Какие есть альтернативы "голому" JDBC, если хочется писать запросы вручную, но всё же как то упростить работу по маппингу? Немного смотрел iBatis, знаю про Commons DbUtils, Spring-овские классы.
В целом в JDBC не нравится checked SQLException, отсутствие именованных параметров, и, возможно, неудобно маппить. Вроде iBatis это решает, но может быть с ним есть свои проблемы, или есть более удобные библиотеки?