SQL語句編寫的工作量較大,特別是在字段多和關(guān)系表多的時(shí)候,體現(xiàn)的淋漓盡致,對開發(fā)人員編寫SQL語句的功底有一定要求;SQL語句依賴于數(shù)據(jù)庫,導(dǎo)致數(shù)據(jù)庫一致性差,不能隨意更換數(shù)據(jù)庫。(采用分?jǐn)?shù)據(jù)庫寫)
其他Mybatis通過SessionFactoryBuider由XML配置文件生成SessionFactory,然后由SessionFactory生成Session,最后由Session來開啟執(zhí)行事務(wù)和SQL語句。其中SessionFactoryBuider,SessionFactory,Session的生命周期都是差不多的,支持JDBC和JTA事務(wù)處理。Mybatis是半自動的,它僅有基本的字段映射,對象數(shù)據(jù)以及對象實(shí)際關(guān)系任然需要通過手寫sql來實(shí)現(xiàn)和管理,由于mybatis需要手寫sql,因此與數(shù)據(jù)庫的耦合性直接取決于程序員寫的sql的方法,如果sql不具通用性而用例很多某數(shù)據(jù)庫特性的sql語句,移植性也會隨之降低很多,成本很高。但是,由于mybatis的sql語句都是寫在xml里,這樣優(yōu)化起來方筆,靈活度較高。這里再說一下mybatis緩存機(jī)制,Mybatis的二級緩存配置都是在每個(gè)具體的表-對象映射中進(jìn)行詳細(xì)配置,這樣針對不同的表可以自動以不同的緩存機(jī)制,并且Mybatis可以在命名空間中共享相同的緩存配置和實(shí)例,通過cache-ref來實(shí)現(xiàn)。
補(bǔ)充mybatis中#{}
和${}
的區(qū)別:#{}
是預(yù)編譯處理,會將sql中的#{}
替換為問號【?】,調(diào)用PreparedStatement的set方法來賦值${}
是字符串替換,就是把${}
替換成變量的值。
緩存 一級緩存使用#{}可以有效的防止sql注入,提供系統(tǒng)安全性。
基于PerpetualCache
的 HashMap 本地緩存,它的聲明周期是和SQLSession
一致的,有多個(gè)SQLSession
或者分布式的環(huán)境中數(shù)據(jù)庫操作,可能會出現(xiàn)臟數(shù)據(jù)。當(dāng)Session flush
或 close 之后,該 Session 中的所有 Cache 就將清空,默認(rèn)一級緩存是開啟的。
基于PerpetualCache
的 HashMap 本地緩存,不同在于其存儲作用域?yàn)?Mapper 級別的,如果多個(gè)SQLSession
之間需要共享緩存,則需要使用到二級緩存,并且二級緩存可自定義存儲源,如 Ehcache。默認(rèn)不打開二級緩存,要開啟二級緩存,使用二級緩存屬性類需要實(shí)現(xiàn) Serializable 序列化接口(可用來保存對象的狀態(tài))。
溫馨提醒:如果有描述不符,可以評論說明,攜手總結(jié)歸納
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧
網(wǎng)頁題目:【mybatis】記錄優(yōu)缺點(diǎn)說明-創(chuàng)新互聯(lián)
當(dāng)前網(wǎng)址:http://jinyejixie.com/article16/dphodg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設(shè)、定制網(wǎng)站、外貿(mào)建站、網(wǎng)站營銷、電子商務(wù)、云服務(wù)器
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容