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