Hibernate批量处理海量其实从性能上考虑,它是很不可取的,浪费了很大的内存。从它的机制上讲,Hibernate它是先把符合条件的数据查出来,放到内存当中,然后再进行操作。实际使用下来性能非常不理。
spring jdbctemplate和hibernate在处理简单查询操作时,效率基本相同,甚至hibernate的效率要略高一些。但是在执行批量操作,繁琐操作时,hibernate的效率能达到spring jdbctemplate的80%就不错了。但hibernate可以极大提高开发效率,像分页等较复杂的开发都是可以直接完成的,所以弥补了效率的不足。
总结一下:追求执行效率则spring jdbc;追求开发效率则hibernate;
如果SQL语句存在较多批量操作,建议spring jdbc
JdbcTemplate缺点:sql得自己写,一旦要写sql,则会增加灵活和复杂性,当然也不利于跨数据库(毕竟每个数据库的实现产品的sql也不竟相同)。
若使用hibernate则不用关心底层的数据库是哪个数据库,在编程方面,也更对象化了,比如save(Object obj),我们操作的都是对象。hibernate也利用了缓存产生实现与数据库的读取操作,提高了性能。