1. 在項(xiàng)目中經(jīng)常碰到的數(shù)據(jù)庫(kù)分頁(yè)查詢, ORM 一般都支持的不好, 如果用 ORM, 這部分程序往往要自己擴(kuò)展, 而 SqlMap 對(duì)各種查詢語(yǔ)句不分彼此, 一概在 Map 文件里定義。
2. 對(duì)一些稍微復(fù)雜些的語(yǔ)句, 例如在對(duì)金額等敏感數(shù)據(jù)操作時(shí), 一個(gè)常用的操作序列是:
a. 先取出當(dāng)前金額
b. 運(yùn)算后得到更新的金額
c. 執(zhí)行 Update 語(yǔ)句: Update < tableName > set amount= < New amount > where amount= < Old amount >
這種操作是 ORM 不能支持的, SqlMap 能很好的支持。
3. SqlMap 的 Domain 對(duì)象可以直接放在業(yè)務(wù)層, 一般 ORM 的對(duì)數(shù)據(jù)訪問(wèn)的基類要放在數(shù)據(jù)訪問(wèn)層(因?yàn)閹в袑?duì)數(shù)據(jù)訪問(wèn)的接口, 放在業(yè)務(wù)層不合適), 增加了代碼的冗余度。
4. 用 ORM 的目的是什么, 最主要的目的是減少重復(fù)的底層編程工作量, SqlMap 完全可以做到。
再說(shuō)說(shuō) SqlMap 的不足:
1. 因?yàn)椴幌?ORM 那樣生成穩(wěn)定可靠的對(duì)數(shù)據(jù)訪問(wèn)的基類, 所以要對(duì) Map 操作做好充足的單元測(cè)試, 增加了測(cè)試的工作量。
2. 每次改動(dòng)數(shù)據(jù)庫(kù), Map 和 Domain 文件往往要手工修改, 因?yàn)?SqlMap 的靈活性, 往往我們會(huì)手工調(diào)整 Map 而不會(huì)直接使用 Generator 生成的代碼。
from: http://matrix.foresee.cn/blogs/simon/archives/001638.html