1.有的人認為使用了SSH可以大大提高系統速度,其實不然,我兩個月前遇到的壹個銀行反洗錢項目就使用struts1.2 + jdbc開發,數據庫20G左右,同樣正常運行,速度還可以,我認為SSH提高的是非視圖層的開發效率,減少了維護難度,對於運行速度倒不壹定
2.有的人認為只要會SSH的基本組合就可以了,其實不然,它們每個都是很多的版本,有些版本存在本質區別,如struts1和struts2的本質不同,spring2和spring2.5的註解配置,如果壹點不考慮,壹股腦采用配置文件,最終的結果只會被配置文件淹沒,反而提高了維護難度,當然,太多的註解也讓人昏迷,所以我認為必須對這些重點差異版本都進行學習,至少使用壹會,自己去體會,找到配置文件和註解的平衡,從而提高開發效率,減少維護難度
3.有的人認為hibernate好啊,有了它就萬事大吉,其實不然,經過實踐證明,它無法對復雜sql進行良好處理,事實上,實際項目中對復雜sql的需求相當高,遠比增刪改多,比如,我曾經做過的反洗錢系統中,三個大表,即使分表後依然千萬級的數據量,並且三表還存在關聯,使用hibernate,無法想象,所以我們使用ibatis2來專門處理復雜查詢sql,以及批量修改和刪除,使用hibernate來處理其他操作
這裏給壹個SQL,看誰能使用HQL寫出來,如果有,我佩服
Sql代碼 收藏代碼
select datename(year,a.tr_date)+datename(month,a.tr_date)+(case when day(a.tr_date)<10 then '0'+datename(day,a.tr_date) else datename(day,a.tr_date) end ) as trade_date,
datename(year,a.analyse_date)+datename(month,a.analyse_date)+(case when day(a.analyse_date)<10 then '0'+datename(day,a.analyse_date) else datename(day,a.analyse_date) end ) as analyse_date,
datename(year,a.rep_date)+datename(month,a.rep_date)+(case when day(a.rep_date)<10 then '0'+datename(day,a.rep_date) else datename(day,a.rep_date) end ) as rep_date,
a.*,
d.*,
s.file_name
from tbriskshow a, tbriskshow_detail d, tbriskshow_relation r, rep_riskshow_file s
where a.check_flag > 2
and a.sus_flag = 2
and r.id = a.id
and r.tbriskdetail_id = d.id
and a.status = 0
and a.type = 5
and s.riskshow_id = a.id
4.合理的配置文件布局很重要,項目開發才能正常進行,不要以為將所有struts,spring配置信息放置在壹個文件中會很爽,如果妳感覺到爽,那是因為妳做的項目太小,所以全部按某種規範分開放置,使用總配置文件來引用這些配置
5.再說說視圖層,當前無外乎是JSP、CSS、JS、EL、JSTL、JSF、Jquery、Ext等技術,再高級點的就是使用JSP自定義標簽技術將某些東西封裝起成標簽表單和表格,供統壹調用,其實不管怎麽樣,由於每個人技術層次不同,到了後面維護必可避免的難搞,所以我結合我自己做過、參與過、看過的項目,認為視圖層可以這樣做:將所有控件封裝(有人可能會說,這得封裝多少東西啊,其實主要封裝了表單、表格、樹形、復選下拉、對話框,就能解決大部分問題),開發人員使用標準XML來配置界面以及其方法,再通過壹個標準XML格式和服務器(SSH、存儲過程)進行交互,這樣,哪怕壹個對界面完全沒有感覺的人也能做出漂亮且風格完全統壹的頁面,並且維護相對容易,以下是壹個示例
頁面配置XML:
<!-- 菜單操作基礎表單 -->
<view id="10000011_form_base_conf">
<column>2</column>
<defButtons>true</defButtons>
<col type="number" field="cdbh" readonly="true" value="-1">菜單編號</col>
<col type="number" field="fjbh" readonly="true" value="-1">父級編號</col>
<col type="input" field="cdmc" must="true">菜單名稱</col>
<col type="select" field="sfzy" must="true" option="是:1|否:0">是否枝葉</col>
<col type="number" field="pxh">排序號</col>
<col type="input" field="ljdz" must="true">連接地址</col>
</view>
<!-- 添加菜單 -->
<view id="10000011_form_add_conf">
<ext>10000011_form_base_conf</ext>
<add_func_id>10000012</add_func_id>
</view>
<!-- 修改菜單 -->
<view id="10000011_form_edit_conf">
<ext>10000011_form_base_conf</ext>
<edit_func_id>10000013</edit_func_id>
<delete_func_id>10000014</delete_func_id>
</view>
數據訪問XML:
<func id="10000012">
<param name="cdmc" type="varchar" nullValue="" />
<param name="sfzy" type="int" nullValue="0" />
<param name="fjbh" type="int" nullValue="0" />
<param name="pxh" type="int" nullValue="0" />
<param name="ljdz" type="varchar" nullValue="" />
</func>
6.最後說說JavaWeb的未來,當然我個人認為的未來,隨著Iphone,Ipad,安卓的普及,JavaWeb進軍手機是必然的,就像當年PC上用PB,VB做的MIS,CRM等管理類桌面程序被大清洗壹樣(本人原來也是個PB程序員,後來轉的Java,現在還依稀記得datewindow的風采),所以我認為JavaWeb的未來就是手持設備瀏覽器,服務器端其實應該沒有太大變化,主要前端UI部分:多風格、多點觸控式完全替代傳統的表格、表單都是可能的,現在已經有不少框架出現,JQtouch、Jquery Mobile、Sencha Touch等等,當然這些我自己也還在學習中,談不出什麽,但我相信這就是未來,讓我們拭目以待吧