華山論劍

          一心一意做技術!

          BlogJava 首頁 新隨筆 聯系 聚合 管理
            31 Posts :: 0 Stories :: 447 Comments :: 0 Trackbacks

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

          一、快速體驗及上手

            EasyJWeb考慮到國內存在很多Java初學者的情況,因此代碼書寫及發布方式力求簡單明了,讓新手也能快速上手。在發布的0.6.0版本中,不但實現了ant及maven來管理項目發布,還初步實現了代碼生成引擎中的部分功能。你可以在下載了EasyJWeb項目的源代碼后,花上不到兩分鐘即實現一個添刪改查及分頁的Java Web代碼生成、編譯及打包發布等過程。整個過程只需要下載EasyJWeb源碼->建表->改數據源配置文件->執行生成命令easyjwebtools->然后運行即可。詳細步驟如下:
            1、?下載EasyJWeb最新版本
            http://www.easyjf.com/easyjweb/download.htm
            2、建立數據庫及數據表
            使用My SQL或MS SQL數據庫,建一個庫,然后建一個表,比如message(留言板)。由于EasyJWeb Tools業務引擎中使用的是ORM系統訪問數據庫,因此要求每個表都設置一個名為cid的、類型為varchar(16)的主鍵字段,然后就是其它的一些需要使用的字段。如下面我寫的示例表:
          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;

          生成的添刪改查及分頁代碼缺省情況下使用EasyJF團隊開發的超輕量級ORM框架EasyDBO訪問數據庫。當然你可以根據自己的情況選擇其它的ORM系統,如hibernate、iBatis等。

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

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

          附:
            關于 最新《世界杯與國產開源系列》文章的發布,請看本人Blog在非技術區中的友情公告,歡迎感興趣的朋友前去指教,地址:http://www.aygfsteel.com/daxia/archive/2006/06/28/55435.html?

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

          Feedback

          # re: EasyJWeb Tools中代碼自動生成引擎詳解 2006-06-28 12:40 HardJWeb
          你們好無聊,解散算了  回復  更多評論
            

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

            前段時間一直在潛水,看熱鬧,現在大家都比較安靜了,我來說一句:  
            easyjf做得很不錯,也看到了進步,不過建議大峽同志別在跟這些小人計較了。看了你君子劍里面上面的一段,好像是說的blogjava那幾個總是跟你們作對的人吧。
            從我在springside的用戶QQ群里面看到的,可以肯定你的Spring那篇什么輪子理論的文章是引起前一時間的爭吵的原因,難道你不知道springside的人跟blogjava之間的關系嗎?專心做技術吧,我希望看到寫程序的大峽,而不是寫文章的大峽,不過你寫的文章我肯定都會看。   回復  更多評論
            

          # re: EasyJWeb Tools中代碼自動生成引擎詳解 2006-07-05 21:58 獵手
          大俠,如果你們對compass熟悉的話,就給大家普及一下嘛,也算推動國內搜索的應用服務,如果可以的話,把那個英文文擋給翻譯成中文怎么樣啊。謝謝啦  回復  更多評論
            


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 灵山县| 勐海县| 颍上县| 仁寿县| 开江县| 浪卡子县| 苍山县| 陈巴尔虎旗| 苗栗市| 大悟县| 大化| 佛教| 突泉县| 盱眙县| 东方市| 团风县| 唐河县| 上蔡县| 大宁县| 志丹县| 赤壁市| 大名县| 邵阳县| 上高县| 苏尼特左旗| 印江| 蓬莱市| 唐海县| 重庆市| 虞城县| 巩留县| 中牟县| 甘洛县| 吉安县| 南开区| 金寨县| 大新县| 枝江市| 德格县| 札达县| 绥阳县|