Posted on 2007-09-11 17:07
匪客 閱讀(2000)
評(píng)論(1) 編輯 收藏 所屬分類:
開發(fā)技術(shù)
此文檔講述的內(nèi)容適合于對(duì)
Spring MVC
和數(shù)據(jù)持久層
ORM
概念有一定基礎(chǔ)的開發(fā)者,著重于講述基于
Spring
框架基礎(chǔ)之上進(jìn)行
Java
開發(fā)的其中一種技術(shù)解決方案,而不是講述相關(guān)技術(shù)的原理,想要了解技術(shù)原理內(nèi)容請(qǐng)參考相關(guān)文檔資料。
?
現(xiàn)在,網(wǎng)絡(luò)上流傳的Spring+Struts+Hibernate用得非常火,幾乎成為很多對(duì)技術(shù)癡迷的人的技術(shù)架構(gòu)標(biāo)準(zhǔn),可是在我看來,也許是因?yàn)轫?xiàng)目都不算大,人力也不夠多,這個(gè)技術(shù)架構(gòu)太復(fù)雜了。從Spring本身來講,從MVC到數(shù)據(jù)操作,都可以不需要其他附加組件即可實(shí)現(xiàn),并且結(jié)構(gòu)清晰,使用簡單,功能還更加強(qiáng)大,本文講述的重點(diǎn)就是單獨(dú)使用Spring來建立一個(gè)簡易的開發(fā)框架。
?
首先說,為什么選擇Spring呢?大概在2003年的時(shí)候,Struts已經(jīng)開始流行了,但是在學(xué)習(xí)Struts的時(shí)候感覺這個(gè)技術(shù)框架比原始的JSP+JavaBean的方式復(fù)雜了很多,后來2004年做新項(xiàng)目時(shí)在論壇上看到推薦Spring,下載一試,上手非常的容易,結(jié)構(gòu)也很清晰,支持的功能也非常多,所以決定用它了(其實(shí)那時(shí)候?qū)τ谝蕾囎⑷牒?/span>AOP代理還不甚了解,也很少用到接口)。
在2001-2003年的時(shí)候都是自己封裝了JavaBean做為公共模塊來訪問數(shù)據(jù)庫的,后來ORM興起了,先是看了Hibernate的,3.0版還沒用出,還不支持存儲(chǔ)過程,因?yàn)槟菚r(shí)候也做Delphi相關(guān)開發(fā),用慣了SQL語句,始終覺得HQL這樣的東東增加了開發(fā)的復(fù)雜度和不可控制性,原生的復(fù)雜SQL語句無法使用,不喜歡。后來看到了iBATIS,經(jīng)過試用,正是我所需要的,SQL語句配置簡單,基本不會(huì)破壞SQL語句的結(jié)構(gòu),這樣將SQL語句Copy到外部數(shù)據(jù)庫工具中進(jìn)行調(diào)試也非常的方便,加上SQL語句可以使用很多的特定數(shù)據(jù)庫的函數(shù),執(zhí)行效率和簡潔性也非常好,修改了SQL又不需要重新編譯程序。
有網(wǎng)友說Hibernate支持多個(gè)數(shù)據(jù)庫移值啊,我認(rèn)為這個(gè)就不僅僅是SQL語句的問題了,還有很多其他方面的因素,大多數(shù)項(xiàng)目都可以不用考慮。又有網(wǎng)友說Hibernate對(duì)于數(shù)據(jù)庫結(jié)構(gòu)修改的影響比較小,這種情況影響的也不僅僅是幾句代碼的問題,涉及到界面表現(xiàn)、業(yè)務(wù)流程等很多重要方面,相對(duì)說來修改代碼倒是小Case了。
說完了上面的
ORM
組件,再說說
JDBC
,
Spring
的
JdbcTemplate
將我們常用的
JDBC
流程封裝起來,使用非常簡單,一般執(zhí)行的
SQL
就是一句話,構(gòu)造
SQL
隨著業(yè)務(wù)的復(fù)雜而復(fù)雜,并且也支持
PrepareStatement
的執(zhí)行模式避免
SQL
注入漏洞發(fā)生,同樣具備完整的數(shù)據(jù)操作功能如查詢、更新、存儲(chǔ)過程、異常捕捉等等,經(jīng)過幾年的使用比較,我認(rèn)為輕型的項(xiàng)目使用
JdbcTemplate
是非常不錯(cuò)的選擇。
由于能力所限,其中細(xì)節(jié)如有欠缺之處,請(qǐng)多多批評(píng)指正。
2.
參考資料
2 ?
Spring
官方網(wǎng)站:
http://www.springframework.org/
;
2 ?
Spring 2.0
中文參考手冊(cè):
http://spring.jactiongroup.net/
;
2 ?
Apache Jakarta
官方網(wǎng)站:
http://jakarta.apache.org/
;
2 ?
JSTL
官方網(wǎng)站:
http://java.sun.com/products/jsp/jstl/
;
2 ?
Intellij IDEA
官方網(wǎng)站:
http://www.jetbrains.com/
;