最近在看spring,发现jdbctemplate也能很好地对数据库CRUD,那么产生了如摘要的疑问,在此记录一下,红色字体为重点。
1.JDBCTemplate是Spring对jdbc的封装,但sql还是得自己写,一旦要写sql,则会增加灵活和复杂性,当然也不利于跨数据库(毕竟每个数据库的实现产品的sql也不竟相同)。
若使用hibernate则不用关心底层的数据库是哪个数据库,在编程方面,也更对象化了,比如
save(Object obj),我们操作的都是对象。hibernate也利用了缓存产生实现与数据库的读取操作,提高性能太多了。
2. 现在许多项目都采用hibernateTemplate和JDBCTemplate混用的方式 HibernateTemplate一般是为了加快开发效率,还有就是使用Hibernate的时候,更简洁,更便利,而统一的声明事务,又让本来就已经很简洁的Hibernate对事务的处理,大大简化 但任何事务都有两面性,在带来大量便捷的同时,Hibernate也给我们留下了一点小小的遗憾,比如众所周知的,在处理大批量数据查询的时候,Hibernate的查询效率,是不尽人意的,有人做过测试,在高并发查询的时候,hibernate的查询效率,仅仅相当于使用jdbc效率7成左右,这对于对速度有着很高要求的互联网应用来说,不能不说是悲剧。 Hibernate在做批量操作时,效率不是很理想。所以现在采用JDBCTemplate和Hibernate混用,这时有几个注意事项. 1.如果采用JDBCTemplate的部分只涉及到查询,则可以使用Hibernate的应用缓存,即二级缓存。 2.如果采用JDBCTemplate的部分涉及到对数据库的更新操作,即增,删,改.则不能开启Hibernate的二级缓存,如果系统有缓存的需要,我觉得可以自己在逻辑层实现缓存.Java的缓存方案还是很多的。 3.在使用Spring做为容器的系统中,混用JDBCTemplate和Hibernate,事务管理请统一使用HibernateTransactionManager,前提是JDBCTemplate和Hibernate共用一个DataSource.
在此我只是对资料的汇合,如果大家有什么新的看法,希望能通过留言来交流,谢谢大家的指导。
参考资料:
1.http://bbs.csdn.net/topics/330256418
2.http://zhidao.baidu.com/link?url=UMlaR3oPG9mtIEh748IyUlZhWILd2RIA9AxVPbd_BeUuL-cF0184pQQwzm_AimEYS6y5og38skL4xWHoX11bDq