各有长短, 谈不上谁比谁垃圾. 现在主流不都是spring-data-jpa + mybatis么.
mybatis的sql语句放在xml中排版更好看, 然后mybatis的动态传参数也是非常方便的.
对性能没有严苛的要求用hibernate就好了.
动态组织sql这方面mybatis处理起来很方便的, 比如
select * from t_blog where 11 = 1 and title = #{title} and content = #{content} and owner = #{owner}
用hibernate难免里写一堆判断.
不知道楼主所说XML重新生成是什么意思, 这个应该是IDE处理好的吧?
其实完全可以结合起来用.