Bevallom én nem értem a többiek problémáit. Évek óta használom a hibernate-t több projektben is (régebben hbm.xml-lel és spring dao-val, újabban JPA2 apin keresztül, de spring támogatással) és eddig semmi problémám nem volt vele. Ezek között volt olyan "egzotikus" is, ahol régi alkalmazást kellett portolni, ezért ResultTranformer-t kellett alkalmazni és criteria/HQL helyett jó kis nyers SQL-t (dinamikus táblanév választás és elég összetett sql queryk), de a hibernate itt is nagy segítség volt. Ilyeneket is meg lehet vele tenni:
final SQLQuery query = session
.createSQLQuery("SELECT {a.*}, {b.*}, {c.*} FROM "
+ aTableName
+ " a, "
+ bTableName
+ " b, "
+ cTableName
+ " c WHERE a.b = ? AND a.u = ? AND a.a = ? AND b.u = a.u AND b.bh = a.b AND c.b = a.b");
query.addEntity("a", A.class);
query.addEntity("b", B.class);
query.addEntity("c", C.class);
query.setString(0, b);
query.setString(1, c);
query.setString(2, a);
query.setResultTransformer(Transformers
.aliasToBean(Result.class));
query.setMaxResults(1);
result = (Result) query.uniqueResult();
Ahol a Result osztály egy összefogó eredmény A, B, C típusú mezőkkel (A, B, C tábláknak kb. 110 oszlopuk van összesen). A fenti példa elég sok gépeléstől ment meg és igazából nem más fű alatt mint plain JDBC.
De lehet használni sima springet is jdbc-vel. Az is sok gépeléstől ment meg, de nem annyitól, mint a hibernate. Ez esetben a JDBCTemplate és a különböző RowMapper jön jól (pl.: ParameterizedBeanPropertyRowMapper).