1. 在项目中经常碰到的数据库分页查询, ORM 一般都支持的不好, 如果用 ORM, 这部分程序往往要自己扩展, 而 SqlMap 对各种查询语句不分彼此, 一概在 Map 文件里定义。
2. 对一些稍微复杂些的语句, 例如在对金额等敏感数据操作时, 一个常用的操作序列是:
a. 先取出当前金额
b. 运算后得到更新的金额
c. 执行 Update 语句: Update < tableName > set amount= < New amount > where amount= < Old amount >
这种操作是 ORM 不能支持的, SqlMap 能很好的支持。
3. SqlMap 的 Domain 对象可以直接放在业务层, 一般 ORM 的对数据访问的基类要放在数据访问层(因为带有对数据访问的接口, 放在业务层不合适), 增加了代码的冗余度。
4. 用 ORM 的目的是什么, 最主要的目的是减少重复的底层编程工作量, SqlMap 完全可以做到。
再说说 SqlMap 的不足:
1. 因为不象 ORM 那样生成稳定可靠的对数据访问的基类, 所以要对 Map 操作做好充足的单元测试, 增加了测试的工作量。
2. 每次改动数据库, Map 和 Domain 文件往往要手工修改, 因为 SqlMap 的灵活性, 往往我们会手工调整 Map 而不会直接使用 Generator 生成的代码。
from: http://matrix.foresee.cn/blogs/simon/archives/001638.html