<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    piliskys

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      25 隨筆 :: 0 文章 :: 40 評論 :: 0 Trackbacks


       在做東西之前,感覺現(xiàn)在很多公司很多項目中都要對hibernate中的hbm.xml,vo,dao進(jìn)行手工編寫,也有很多項目中為了方便省去了dao,用hql直接編寫, 在此,感覺如果用hql操作的話,不利用調(diào)試(沒有

    sql的一些工具可對數(shù)據(jù)庫直接操作,如pl/sql等 )
    對于此三種文件,只是代碼的一些參數(shù)的變化,邏輯操作基本相同,因此本人就想寫一程序直接生成這三

    種文件,當(dāng)我們程序員操作hibernate時,甚至不要求懂hibernate,只要求懂得一些接口,對vo如何操作

    ,這樣的話,可以把hibernate的使用錯誤率降低,可以減少程序員學(xué)習(xí)hibernate的時間,減少程序員寫

    xml,vo,dao的時間,也有利于項目的穩(wěn)定,讓程序員有更多時間了解業(yè)務(wù).
         當(dāng)然這樣的工具在很多公司都自主開發(fā)了,作為公司產(chǎn)品的一部分,也就不可能任何人都得到了。
    可能有人會說網(wǎng)上不是很多自動生成vo,xml等的東西吧,像MiddleGen,xdoclet等,但是它們雖然靈活,

    但不能生成一整套文件,像MiddleGen,我不知道如果有上千個表的話,它會不會死,反正我運(yùn)行一次六七

    百個表進(jìn)就死了,界面化的東西,而且要手工干預(yù),感覺不是很好。
         因此本人還是決定寫一寫此程序,不管它的運(yùn)用是否能成功,開始,本人用erwin生成的xml文件解

    析來操作分析,當(dāng)然通過此xml文件完成是可以得到你要生在的三種文件的所有信息的,它不僅包括數(shù)據(jù)

    庫中的物理結(jié)構(gòu),而且定義的邏輯結(jié)構(gòu)也在此xml文件中,這樣的話,就可以實現(xiàn)一些表名的中注釋,而

    且定義表的字段的大小寫也清晰分明,而且對文件操作可以與數(shù)據(jù)庫相脫離,感覺是一個很好的選擇。
    但當(dāng)運(yùn)用后發(fā)現(xiàn),xml定義要很規(guī)范,(如果是對于專一用戶來說是很容易實現(xiàn)),而且當(dāng)今用數(shù)據(jù)建模

    的工具太多,而且就算用erwin建模也可能定義的很不一樣。因此決定用直接從數(shù)據(jù)庫出發(fā)。
        相對erwin的xml文件,數(shù)據(jù)庫的不足是沒有邏輯結(jié)構(gòu),因此不可能有一些表的中方對應(yīng)注釋,而且表

    名和字段名都變大寫,大小寫很難與原意相同,如定義的字段為FisrtName,在數(shù)據(jù)庫中都變?yōu)榇髮?,就?/P>

    難還原成此字符串,但好在此多數(shù)下不會影響操作。
         因此,本人定義的vo中,表名 為 ab_cd_ef 對應(yīng)的vo就是AbCdEfVO,也就是首字大寫有下劃線的后

    一字母大寫,最后加上大定的'VO'二字符。
    在hbm.xml文件中,本人只定義one-to-many,而其它many-to-one或one-to-one是在vo中找出此表對應(yīng)外

    鍵的vo,個人感覺:雖然hibernate中有多種對應(yīng)關(guān)系,但是作為從本條結(jié)果出生,就為兩種,to-many和

    to-one,
    在vo中,本個引入了一個hashMap,nulllist主要是為了一些查詢、更新、或刪除時,用于字段設(shè)置為空時

    進(jìn)行操作。
      主要接口
    其中有一個接作接口,

    public interface DataStore {
          
    /**
             * 刪除單個vo
             * 
    @param obj   需要設(shè)置主鍵
             * 
    @throws com.piliskys.exception.DAOException
             
    */

        
    public  void delete(Object obj)
            
    throws DAOException;
              
    /**
               * 刪除一系列vo
               * 
    @param obj 所有字段可設(shè)置null, 若屬性為字符串,可設(shè)置為 %,自動刪除匹配的VO
               * 
    @return  刪除后返回的行數(shù)
               * 
    @throws DAOException
               
    */

        
    public  int deleteByVO(Object obj)
            
    throws DAOException;
             
    /**
              * 單個vo更新
              * 
    @param obj 要設(shè)置主鍵(作為查詢條件) 其它set屬于更新字段
              * 
    @throws DAOException
              
    */


        
    public  int update(Object obj)
            
    throws DAOException;
             
    /**
              * 條件可如是字符串可設(shè)置帶%,其它可設(shè)置null,不能設(shè)置為''字符串
              * 以前一對像做為條件進(jìn)行批量更新后一對象設(shè)置的值
              * 
    @param obj 條件
              * 
    @param obj1  要更新的值
              * 
    @throws DAOException
              
    */

         
    public  int update(Object obj,Object obj1)
            
    throws DAOException;
              
    /**
               * 插入一VO
               * 
    @param obj 要設(shè)置一些相應(yīng)的屬性
               * 
    @return
               * 
    @throws DAOException 違反插入操作報錯
               
    */


        
    public  Serializable insert(Object obj)
            
    throws DAOException;

               
    /**
                * 返回設(shè)置最大個數(shù)的vo
                * 
    @param class1
                * 
    @return
                * 
    @throws DAOException
                
    */

        
    public  List selectAll(Class class1)
            
    throws DAOException;

                
    /**
                 * 根據(jù)主鍵查找vo
                 * 
    @param obj 要設(shè)置主鍵
                 * 
    @return  返回一相應(yīng)的vo
                 * 
    @throws DAOException
                 
    */

        
    public  Object selectByPK(Object obj)
            
    throws DAOException;

                
    /**
                 * 根據(jù)對象設(shè)置的屬性的值進(jìn)行查找
                 * 
    @param obj 可設(shè)置null,字符串字段可設(shè)置帶%字符串
                 * 
    @return   對應(yīng)的list
                 * 
    @throws DAOException
                 
    */

        
    public  List selectByVO(Object obj)
            
    throws DAOException;

                
    /**
                 * 根據(jù)對象設(shè)置的屬性及起始和結(jié)束的個數(shù)的值進(jìn)行查找
                 * (用于分頁)
                 * 
    @param obj
                 * 
    @param i  開始的行
                 * 
    @param j  結(jié)束的行
                 * 
    @return   對應(yīng)的list
                 * 
    @throws DAOException
                 
    */

        
    public  List selectByVO(Object obj, int i, int j)
            
    throws DAOException;

                 
    /**
                  * hibernate的事物管理
                  * 
    @return  hibernate事物
                  
    */

        
    public  Transaction currentTransaction()   throws DAOException;;

                 
    /**
                  * hibernate中直接調(diào)用sql語句(用于update和delete)
                  * 
    @param s  sql字符串
                  * 
    @return   更新或刪除的個數(shù)
                  * 
    @throws DAOException
                  
    */


        
    public  int sqlExcute(String s)
            
    throws DAOException;
                  
    /**
                   * hibernate中直接調(diào)用sql語句(用于update和delete)
                   * 
    @param s  帶“?”的字符串
                   * 
    @param list  參數(shù)的設(shè)置
                   * 
    @return   更新或刪除的個數(shù)
                   * 
    @throws DAOException
                   
    */

        
    public  int sqlExcute(String s, List list)
            
    throws DAOException;
                  
    /**
                   * 利用sql中帶參數(shù)的查詢
                   * 
    @param s 帶 “?”字符的字符串 
                   * 
    @param list 參數(shù)集合
                   * 
    @return  List 含map的list,key為字段全部小寫
                   * 
    @throws DAOException
                   
    */

        
    public List selectBySQL(String s, List list)
                
    throws DAOException;
                   
    /**
                    * HQL查詢
                    * 
    @param s
                    * 
    @param list   參數(shù)對應(yīng)值系列
                    * 
    @return
                    * 
    @throws DAOException
                    
    */

        
    public  List selectByQuery(String s, List list)
            
    throws DAOException;
        
    /**
         *
         * 
    @param s   HQL
         * 
    @param list  參數(shù)對應(yīng)值系列
         * 
    @param i  結(jié)果集開始數(shù)
         * 
    @param j  結(jié)果集數(shù)
         * 
    @return
         * 
    @throws DAOException
         
    */

        
    public  List selectByQuery(String s, List list,int i,int j)
            
    throws DAOException;
        
    public   void flush()
            
    throws DAOException;
        
    public   void close();
        
    public   void open();


    ========================================================================================
    DataStore ds =     DataManager.getInstance();//得到一個操作的實像,現(xiàn)在你就可以用此類進(jìn)行以

    上操作
    如:Transaction tx =   ds.currentTransaction() ;//得到此事務(wù)
    現(xiàn)在我們假設(shè)有一個person類(id,name,address),id為主鍵
    1,要查出id為'2323'的person  ds.selectByPK( new PersonVO('2323') );
    2, 要查出所有姓'李'的person集合
       PersonVo per = new PersonVo();
       per.setName('劉%');
     List list =  ds.selectByVO(per) ;
    3, 要查出所有姓'李'的,地址為空的person集合
       PersonVo per = new PersonVo();
       per.setName('劉%');
       per.setAddress(null);
     List list =  ds.selectByVO(per) ;
    以上可以任意組合,deleteByVO同樣適用以上方法。
    其它請參看以上接口類。
    ====================================================================================
    若你需要以程序:請發(fā)郵件給我,但請注意:若你索取程序的同時,代表你同意以下信息,
      1,請不要以任何形式轉(zhuǎn)發(fā)此程序給他人。
      2,如果你認(rèn)為此程序很有缺陷,請指出,以便進(jìn)行解決。
      3,如果在實踐中你以此程序受益,請必須進(jìn)行付費。
    =====================================================================================
    最后:希望得到你的支持與理解,更希望得到你的意見和建議。
    請勿在此回復(fù)索取,本人郵件(piliskys@163.com)

    posted on 2006-01-17 18:51 霹靂火 閱讀(8282) 評論(10)  編輯  收藏

    評論

    # re: hibernate自動生成xml,vo,dao(目前只實現(xiàn)oracle數(shù)據(jù)庫) 2006-09-16 21:40 wildfire
    不錯,你的程序不能免費嗎  回復(fù)  更多評論
      

    # re: hibernate自動生成xml,vo,dao(目前只實現(xiàn)oracle數(shù)據(jù)庫) 2006-11-28 17:33 xy
    請問有沒有解析PowerDesigner的類?  回復(fù)  更多評論
      

    # re: hibernate自動生成xml,vo,dao(目前只實現(xiàn)oracle數(shù)據(jù)庫) 2007-02-05 17:35 1
    這也要錢??????????  回復(fù)  更多評論
      

    # re: hibernate自動生成xml,vo,dao(目前只實現(xiàn)oracle數(shù)據(jù)庫) 2007-05-09 18:15 但是
    垃圾還要錢  回復(fù)  更多評論
      

    # re: hibernate自動生成xml,vo,dao(目前只實現(xiàn)oracle數(shù)據(jù)庫)[未登錄] 2007-05-10 15:35 xy
    垃圾確實可以賣錢的,而且可以同時討飯,雙收。  回復(fù)  更多評論
      

    # re: hibernate自動生成xml,vo,dao(目前只實現(xiàn)oracle數(shù)據(jù)庫)[未登錄] 2007-05-17 15:45 ^_^
    李變成劉,這點小問題都出現(xiàn)還要錢。。。爬哦  回復(fù)  更多評論
      

    # re: hibernate自動生成xml,vo,dao(目前只實現(xiàn)oracle數(shù)據(jù)庫) 2007-09-06 16:50 osshome
    改成共享方式吧,好用的話有人買的。  回復(fù)  更多評論
      

    # re: hibernate自動生成xml,vo,dao(目前只實現(xiàn)oracle數(shù)據(jù)庫) 2007-12-21 21:57 技術(shù)交流
    樓主若對j2ee技術(shù)感興趣,我們誠邀您加入我們的技術(shù)討論QQ群41732384 !本群加入條件為1年以上java工作經(jīng)驗!   回復(fù)  更多評論
      

    # re: hibernate自動生成xml,vo,dao(目前只實現(xiàn)oracle數(shù)據(jù)庫) 2008-06-05 11:11 唐福林
    tangfulin2003@163.com
      回復(fù)  更多評論
      

    # re: hibernate自動生成xml,vo,dao(目前只實現(xiàn)oracle數(shù)據(jù)庫) 2009-03-19 07:28 溫暖月光
    我只是在思考一個問題
    當(dāng)你做好這個接口之后
    需要使用還是要重新寫里面的方法
    這樣還是要對hibernate有一定的了解
    不是多此一舉了么

    很抱歉 我說得可能不對 我還是個初級程序員
    希望你能給我一個更深層次的解釋
    email 42347381@qq.com
      回復(fù)  更多評論
      


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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 免费看一级高潮毛片| 久久99国产亚洲精品观看| 大学生一级特黄的免费大片视频| 182tv免费观看在线视频| 99re在线免费视频| 久久久久久国产精品免费无码| 日本一卡精品视频免费| 精品福利一区二区三区免费视频| 7x7x7x免费在线观看| 国产精品色拉拉免费看| 99热在线精品免费全部my| 思思99re66在线精品免费观看| 午夜毛片不卡高清免费| 国产一区二区三区在线免费| 亚洲国产av无码精品| 亚洲中文字幕在线观看| 亚洲v高清理论电影| 亚洲另类视频在线观看| 亚洲av无码专区亚洲av不卡| 高潮毛片无遮挡高清免费视频| 一个人免费播放在线视频看片| 中文字幕版免费电影网站| 久久成人免费大片| 99久久精品日本一区二区免费| 成人免费视频小说| 亚洲AV中文无码乱人伦| 国产亚洲综合色就色| 亚洲国产一区国产亚洲| 亚洲精品福利你懂| 立即播放免费毛片一级| a毛片视频免费观看影院| 777爽死你无码免费看一二区| 好大好深好猛好爽视频免费| 亚洲福利在线播放| 亚洲国产一区国产亚洲| 亚洲日韩一区二区一无码| 无码毛片一区二区三区视频免费播放| 国产精品永久免费视频| 曰批全过程免费视频播放网站| 在线观看免费为成年视频| 综合久久久久久中文字幕亚洲国产国产综合一区首 |