WEB 中srping ssh 与ssi的比较

来源:互联网 发布:威纶触摸屏编程实例 编辑:程序博客网 时间:2024/06/10 06:12

目录(?)[+]

 

Ibates和hibernate的作用无外乎就是和数据库表进行O/Rmapping;

 

使用hibernate你会觉得非常简单,因为你将从DAO层解放出来。而使用ibates,你将不会有这种感觉,因为你依然需要完成DAO那枯燥的工作,和不用框架不同的是,你将不再直接对数据库进行操作,而是通过ibates操作xml文件(这些文件是数据库映射的关键)。
 

一般使用ibates的项目都是需求后期变化很大的项目,或者说根据项目安排需要一部分项目先完成并且部署运行了,这时用ibates无疑是比较好的选择,因为你后期的表还是需要修改的,如果你要是使用hibernate的话,那么如果你对某一个表字段进行修改之后你会发现那些处于dao层的hibernate就要开始罢工了,因为hibernate是自动从对象到数据库完成映射的,这样除非你能严格按照他的规则修改数据库,但是人非机器,孰能无过,一过足以让你的程序歇菜了。

 

hibernate是全封装型orm,做一些需要灵活操作数据库的东东效果很不理想,而且配置了诸如一对多,多对多等映射后,经常会查询一些不必要的数据,即便写了一些可优化性能的配置语句,也会至少查个id出来。而ibatis不会有这种问题,ibatis也是orm一种实现,不同的是sql要自己写,现在只有白痴程序员才不会sql。自己写的sql肯定要灵活,肯定会提高系统性能。但是缺点是开发时间长。ibatis的开发效率明显没有hibernate快

 
为什么使用ibatis而不用spring jdbcTemplate
1:ibatis仅仅是对jdbc薄薄的一层封装,完全不丧失sql的灵活性
2:ibatis所有的sql都可以放在配置文件中,这样有利于sql的集中管理,特别是在sql tuning是很容易把得到所有的sql,如果使用spring jdbctemplate,那么难免要在sql adv上调试好了sql,然后在粘贴到java代码中,会有一大堆的StringObj+=和 StringBufferObj.append() ,如果sql 很长,那么总是copy , paste 也很烦,ibatis没有这样的问题。
3:ibatis可以把查出的结果集自动mapping成po,不用写一行代码,只需配置一下ResultMap参数即可,而jdbcTemplate大多数情况都要手动的mapping或者实现MappingSqlQuery,ResultSetExtractor等,无论如何都要编程,这些都是体力活,如果使用了ibatis,这些体力活完全可以省去。
4:ibatis内置cache机制,同时还可以和osCache集成,cache的也是可以配置的,如果配置得当可以大大提高程序性能。
5:ibatis支持动态sql,不需要在java里有那么多if, else,完全可配置
 
学不完的. 学好这些后, 还有 NoSQL 阵营的一堆不保证 ACID 的数据库等著你学... 别笑喔, google 和 amazon 都说没它们搞不定喔.
原创粉丝点击