java orm框架有哪些 后端使用ORM有必要嗎?
后端使用ORM有必要嗎?還是有必要的,ORM幫實(shí)現(xiàn)了好多功能在TP框架中,使用原生SQL有什么弊端?TP的查詢語法是支持跨數(shù)據(jù)庫的,如果原生的話,可能就不能跨數(shù)據(jù)庫支持了,另外一個(gè)就是在安全過濾這塊需
后端使用ORM有必要嗎?
還是有必要的,ORM幫實(shí)現(xiàn)了好多功能
在TP框架中,使用原生SQL有什么弊端?
TP的查詢語法是支持跨數(shù)據(jù)庫的,如果原生的話,可能就不能跨數(shù)據(jù)庫支持了,另外一個(gè)就是在安全過濾這塊需要自己把關(guān)了,優(yōu)勢是性能上省去了SQL組裝的開銷。
TP:ThinkPHP是一個(gè)快速、兼容而且簡單的輕量級(jí)國產(chǎn)PHP開發(fā)框架,誕生于2006年初,原名FCS,2007年元旦正式更名為ThinkPHP,遵循Apache2開源協(xié)議發(fā)布,從Struts結(jié)構(gòu)移植過來并做了改進(jìn)和完善,同時(shí)也借鑒了國外很多優(yōu)秀的框架和模式,使用面向?qū)ο蟮拈_發(fā)結(jié)構(gòu)和MVC模式,融合了Struts的思想和TagLib(標(biāo)簽庫)、RoR的ORM映射和ActiveRecord模式。
原生sql:數(shù)據(jù)庫能直接執(zhí)行的sql語句,比如能在oracle,mssql,mysql,db2等數(shù)據(jù)庫中直接執(zhí)行
非原生sql:一般指根據(jù)指定的程序規(guī)則,自動(dòng)生成的sql,比如最經(jīng)典的,linq to sql
mybatis和dbutils比,各自有什么優(yōu)缺點(diǎn)?
首先,mybatis的SQL是可以寫在配置文件中,并且可以支持動(dòng)態(tài)SQL,如果你只是使用mybatis的sqlMap而不是當(dāng)作orm來用,那么無論你是單表還是多表查詢,都跟你直接在數(shù)據(jù)庫中寫sql查詢沒多大差別,不存在多表sql不好寫的問題。dbutils比較輕量,但是他的sql是直接傳遞進(jìn)去,不支持動(dòng)態(tài)sql,如果你想要將sql從java代碼中分離出來,或是要進(jìn)行動(dòng)態(tài)sql,那么你就mybatis,如果你的應(yīng)用很小,基本不需要考慮分離sql集中管理,也基本沒啥復(fù)雜的sql,那么你就使用dbutils,直接將sql寫在java代碼里。個(gè)人推薦還是使用mybatis,一是他的sqlMap功能可以將Sql分離集中管理,而且還支持動(dòng)態(tài)SQL,讓你的java代碼更加簡潔,另外有時(shí)候修改SQL不需要重新編譯,方便上線后做微調(diào)。
原生SQL語句和封裝的DB類哪個(gè)好用?
如果框架的數(shù)據(jù)庫服務(wù)僅僅是“簡化一些常見的數(shù)據(jù)庫操作”,那么使用原生 SQL 就無所謂。
因?yàn)橛每蚣芤埠茫迷?SQL 也好,查詢出來的結(jié)果都只是數(shù)組。如果框架提供了全面 ORM 功能,那么直接使用原生 SQL 就需要仔細(xì)考量一下。因?yàn)樵?SQL 查詢出來的結(jié)果不是對象,所以無法利用封裝在數(shù)據(jù)之上的業(yè)務(wù)方法。