華山論劍

          一心一意做技術(shù)!

          BlogJava 首頁(yè) 新隨筆 聯(lián)系 聚合 管理
            31 Posts :: 0 Stories :: 447 Comments :: 0 Trackbacks

            在EasyJWeb-0.6.0推出來(lái)以后,很多網(wǎng)友對(duì)其中的代碼生成部分非常感興趣,并來(lái)信問(wèn)了一些如何使用easyjwebtools、如何支持多表生成、生成頁(yè)面的定制、業(yè)務(wù)邏輯的定制等很多問(wèn)題。下面以我自己的理解,簡(jiǎn)單介紹一下EasyJWeb Tools中的代碼生成的應(yīng)用方法及展望。

          一、快速體驗(yàn)及上手

            EasyJWeb考慮到國(guó)內(nèi)存在很多Java初學(xué)者的情況,因此代碼書(shū)寫(xiě)及發(fā)布方式力求簡(jiǎn)單明了,讓新手也能快速上手。在發(fā)布的0.6.0版本中,不但實(shí)現(xiàn)了ant及maven來(lái)管理項(xiàng)目發(fā)布,還初步實(shí)現(xiàn)了代碼生成引擎中的部分功能。你可以在下載了EasyJWeb項(xiàng)目的源代碼后,花上不到兩分鐘即實(shí)現(xiàn)一個(gè)添刪改查及分頁(yè)的Java Web代碼生成、編譯及打包發(fā)布等過(guò)程。整個(gè)過(guò)程只需要下載EasyJWeb源碼->建表->改數(shù)據(jù)源配置文件->執(zhí)行生成命令easyjwebtools->然后運(yùn)行即可。詳細(xì)步驟如下:
            1、?下載EasyJWeb最新版本
            http://www.easyjf.com/easyjweb/download.htm
            2、建立數(shù)據(jù)庫(kù)及數(shù)據(jù)表
            使用My SQL或MS SQL數(shù)據(jù)庫(kù),建一個(gè)庫(kù),然后建一個(gè)表,比如message(留言板)。由于EasyJWeb Tools業(yè)務(wù)引擎中使用的是ORM系統(tǒng)訪問(wèn)數(shù)據(jù)庫(kù),因此要求每個(gè)表都設(shè)置一個(gè)名為cid的、類型為varchar(16)的主鍵字段,然后就是其它的一些需要使用的字段。如下面我寫(xiě)的示例表:
          CREATE TABLE `message` (
          ? `cid` varchar(16) NOT NULL,
          ? `title` varchar(100) NOT NULL,
          ? `inputUser` varchar(16) default NULL
          ? `inputTime` datetime default NULL,
          ? PRIMARY KEY? (`cid`)
          ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

          生成的添刪改查及分頁(yè)代碼缺省情況下使用EasyJF團(tuán)隊(duì)開(kāi)發(fā)的超輕量級(jí)ORM框架EasyDBO訪問(wèn)數(shù)據(jù)庫(kù)。當(dāng)然你可以根據(jù)自己的情況選擇其它的ORM系統(tǒng),如hibernate、iBatis等。

            3、修改數(shù)據(jù)庫(kù)訪問(wèn)配置文件
            EasyJWeb Tools中代碼生成引擎當(dāng)前是根據(jù)數(shù)據(jù)表的字段名來(lái)生成的代碼。因此,要能正確運(yùn)行該程序,必須保證數(shù)據(jù)庫(kù)的連接配置參數(shù)設(shè)置正確。我們只需要修改下載源碼中的src\main\easyjf-dbo.xml文件即可。關(guān)于EasyDBO的配置說(shuō)明,請(qǐng)看本人的《EasyDBO配置文件easyjf-dbo.xml詳細(xì)說(shuō)明》這篇文章,地址:http://www.easyjf.com/html/20060427/31970563-6771387.htm
            
            4、運(yùn)行easyjwebtools命令
            通過(guò)開(kāi)始菜單的運(yùn)行欄中輸入cmd。然后使用cd命令切換到EasyJWeb源碼解壓目錄的bin目錄。
            然后輸入easyjwebtools <表名>
            在提示按任意鍵后,找到鍵盤(pán)上的任意鍵(呵呵)按一下。直到看到Build Successful的欄式。完成后就到EasyJWeb解壓目錄中生成release目錄,里面有一個(gè)打包好的easyjf-jweb-0.6.war文件,把該文件拷到Tomcat 的webapps目錄下。然后啟動(dòng)Tomcat即可。
            
          二、多表生成
             在實(shí)際應(yīng)用中,我們只有一張表的情況下少之又少。而且不可能每生成一張表的添刪改查就打一個(gè)War包,這不是很搞笑嗎?
             EasyJWeb Tools中的單表生成只是為了提供一個(gè)快速的應(yīng)用體驗(yàn)。因此,easyjwebtools這個(gè)批處理命令是把編譯、生成、再編譯打包發(fā)布等過(guò)程全部集中一起的。大家可以用編輯器打開(kāi)bin目錄中的easyjwebtools.bar這個(gè)文件,注釋(或者刪除)掉其中的call build.bat compile,call build.bat war兩行。這樣在執(zhí)行easyjwebtools這個(gè)批處理的時(shí)候就只完成代碼生成功能而不會(huì)執(zhí)行編譯及打包發(fā)布的過(guò)程了。
          多表生成只需要先編譯一下EasyJWeb項(xiàng)目源代碼。然后再重復(fù)執(zhí)行easyjwebtools生成每一個(gè)表的添刪改查,最后再執(zhí)行一個(gè)重新編譯及打包發(fā)布命令。
            在命令行操作的整個(gè)過(guò)程如下:
          ?  編譯:build compile
            然后重復(fù):easyjwebtools <表1>
                 easyjwebtools <表2>
          ????????????? …
          ????????????? easyjwebtoosl <表n>
            最后執(zhí)行打包發(fā)布:build war

          三、代碼生成引擎的展望
            在實(shí)際的項(xiàng)目中,我們的應(yīng)用是比較復(fù)雜的,而且在代碼生成的時(shí)候還會(huì)有很多具體的需求,比如:
            1、我們會(huì)涉及到成百上千的數(shù)據(jù)表。
            2、?而且這些數(shù)據(jù)表還有著各種各樣的聯(lián)系,如主從關(guān)系、外鍵約束、關(guān)聯(lián)等,很多表還要支持延遲加載(lazy load)等功能。
            3、?操作不會(huì)只是簡(jiǎn)單的添刪改查,還會(huì)有更多的商業(yè)邏輯。
            4、?在生成基于hibernate等ORM系統(tǒng)的時(shí)候,還要生成相關(guān)的配置文件。
            5、?還需要更多的選擇及互動(dòng)操作。
            另外,代碼生成引擎還要考慮很多問(wèn)題,如頁(yè)面的可維護(hù)性、生成后的代碼當(dāng)需求改變的時(shí)候重新生成、生成代碼的可擴(kuò)展性、可維護(hù)性等等。生成的方式、代碼風(fēng)格、頁(yè)面樣式等都要求提供給用戶自由選擇與定制的支持。
            提供一個(gè)可視化的用戶交互界面,而非命令行,使用UML建模,然后根據(jù)UML模型有選擇的生成表結(jié)構(gòu)、生成相關(guān)代碼、測(cè)試代碼、生成各種頁(yè)面文件,并且打包發(fā)布。理想的情況下,代碼生成引擎完成一個(gè)項(xiàng)目的70%以上重復(fù)煩碩的代碼書(shū)寫(xiě)工作。程序員要做的,就是在生成后的代碼或頁(yè)面上做一些個(gè)性化的功能需求或設(shè)置。
            提供簡(jiǎn)易、快速的J2EE應(yīng)用程序開(kāi)發(fā)解決方案,這就是EasyJWeb Tools將來(lái)的奮斗目標(biāo)。EasyJWeb是開(kāi)源的項(xiàng)目,任何會(huì)說(shuō)漢語(yǔ)的人都可以參與進(jìn)來(lái),在此誠(chéng)邀有興趣的朋友一起來(lái)為EasyJWeb Tools的目標(biāo)而奮斗。

          附:
            關(guān)于 最新《世界杯與國(guó)產(chǎn)開(kāi)源系列》文章的發(fā)布,請(qǐng)看本人Blog在非技術(shù)區(qū)中的友情公告,歡迎感興趣的朋友前去指教,地址:http://www.aygfsteel.com/daxia/archive/2006/06/28/55435.html?

          posted on 2006-06-28 10:37 大峽 閱讀(2255) 評(píng)論(3)  編輯  收藏

          Feedback

          # re: EasyJWeb Tools中代碼自動(dòng)生成引擎詳解 2006-06-28 12:40 HardJWeb
          你們好無(wú)聊,解散算了  回復(fù)  更多評(píng)論
            

          # re: EasyJWeb Tools中代碼自動(dòng)生成引擎詳解 2006-06-28 14:17 ianwong
           當(dāng)然,在軟件的領(lǐng)域里,專家們都是知識(shí)分子,相對(duì)顯得比較文雅。因此不會(huì)像足球界那樣動(dòng)不動(dòng)就端出“足球”與“超女”比較誰(shuí)更純潔的討論。不過(guò),國(guó)產(chǎn)開(kāi)源中也會(huì)有部份偽專家冒出如“毛沒(méi)長(zhǎng)齊就敢做開(kāi)源”,還會(huì)編造一些莫須有的“代碼亂”、“有bug”或者是“還有那么多問(wèn)題就敢拿出來(lái)開(kāi)源”的滑稽、可笑理論。這種容易露破綻的專家雖然對(duì)社會(huì)也能造成一些危害,但很容易就會(huì)被揭穿。他們?cè)趺淳毝贾荒苁莻螌<?,練到最高的層次就是首席忽悠大師裘千丈那個(gè)級(jí)別,當(dāng)然很容易被黃蓉一樣的智者揭穿。當(dāng)然還有在某個(gè)博客網(wǎng)站上,那些只會(huì)在我文章屁股后面吐口水、拉屎、拉尿的,滿嘴又臭又臟小丑混混角色,更加不值一提,只是苦了網(wǎng)站管理員還要花很多精力來(lái)打掃。
          --------------------

            前段時(shí)間一直在潛水,看熱鬧,現(xiàn)在大家都比較安靜了,我來(lái)說(shuō)一句:  
            easyjf做得很不錯(cuò),也看到了進(jìn)步,不過(guò)建議大峽同志別在跟這些小人計(jì)較了??戳四憔觿锩嫔厦娴囊欢危孟袷钦f(shuō)的blogjava那幾個(gè)總是跟你們作對(duì)的人吧。
            從我在springside的用戶QQ群里面看到的,可以肯定你的Spring那篇什么輪子理論的文章是引起前一時(shí)間的爭(zhēng)吵的原因,難道你不知道springside的人跟blogjava之間的關(guān)系嗎?專心做技術(shù)吧,我希望看到寫(xiě)程序的大峽,而不是寫(xiě)文章的大峽,不過(guò)你寫(xiě)的文章我肯定都會(huì)看。   回復(fù)  更多評(píng)論
            

          # re: EasyJWeb Tools中代碼自動(dòng)生成引擎詳解 2006-07-05 21:58 獵手
          大俠,如果你們對(duì)compass熟悉的話,就給大家普及一下嘛,也算推動(dòng)國(guó)內(nèi)搜索的應(yīng)用服務(wù),如果可以的話,把那個(gè)英文文擋給翻譯成中文怎么樣啊。謝謝啦  回復(fù)  更多評(píng)論
            


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 临夏市| 电白县| 临沧市| 丘北县| 肥乡县| 咸宁市| 涟源市| 烟台市| 日喀则市| 凤翔县| 武冈市| 灵宝市| 山西省| 和田县| 陆川县| 法库县| 禄丰县| 东辽县| 弥勒县| 香港 | 西宁市| 定兴县| 洞口县| 吉木乃县| 东至县| 文山县| 临潭县| 芮城县| 长兴县| 九龙坡区| 甘洛县| 高雄市| 子长县| 通渭县| 泸州市| 龙南县| 宜都市| 松原市| 西城区| 延边| 广饶县|