麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

關(guān)于Hibernate編程的特點(diǎn)與思考

2019-11-18 12:57:57
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

  Hibernate的一些弱點(diǎn):比如對(duì)象關(guān)系的映射配置過(guò)多,控制復(fù)雜;事務(wù)處理面臨各種兼容問(wèn)題;HQL語(yǔ)言增加學(xué)習(xí)成本等。并提出了一些減化和退化方案,具體請(qǐng)看下面的原文,你的建議又如何?

  想了很長(zhǎng)時(shí)間hibernate的一些弱點(diǎn)

  1.對(duì)象與數(shù)據(jù)庫(kù)的映射,要害在于對(duì)象關(guān)系的映射,但是沒(méi)做到很理想,配置過(guò)多,控制復(fù)雜,另外還會(huì)出錯(cuò)。其實(shí)本質(zhì)在于對(duì)象不夠自由。

  2.事務(wù)處理。這點(diǎn)上更輕易出問(wèn)題,相對(duì)于各種各樣的事務(wù)治理器,要兼容是一個(gè)大問(wèn)題,總歸在各種應(yīng)用服務(wù)器上有很多問(wèn)題。其本質(zhì)在于創(chuàng)建了一個(gè)自我數(shù)據(jù)存取小環(huán)境,必然面臨各種兼容問(wèn)題。

  3.HQL語(yǔ)言。建立對(duì)象查詢語(yǔ)言,類SQL,但是不同于任何一種SQL,調(diào)試環(huán)境復(fù)雜。本質(zhì)在于創(chuàng)建了一種語(yǔ)言,增加學(xué)習(xí)成本。

  減化hibernate,將其退化成一個(gè)sql生成器,既可以保留原有的主要功能,又可以兼容各種應(yīng)用服務(wù)器和數(shù)據(jù)庫(kù)服務(wù)器,另外還不需要學(xué)習(xí)HQL語(yǔ)言。

  只需要一系列的功能函數(shù),作一下包裝,再根據(jù)不同數(shù)據(jù)庫(kù)生成不同的SQL即可,連數(shù)據(jù)庫(kù)類型都不用指定,因?yàn)閺腃onnection中可以獲得數(shù)據(jù)庫(kù)類型屬性。

  假想中的API:

  public Object ResultMapObject(ResultSet rs,String xml) //一行映射單個(gè)對(duì)象,可以用XML綁定,也可以不用。

  public List SQLMapObjects(Connection conn,String []sqls,String xml)  //將一堆SQL映射成一個(gè)對(duì)象樹(shù),可以用xml來(lái)描述綁定,也可以不用,僅使用ror方式的約定。

  借助JDBC和SQL可以構(gòu)建整個(gè)數(shù)據(jù)存取層。

  映射單個(gè)對(duì)象的代碼,將一行記錄映射成單個(gè)對(duì)象。sql可以是任意的。

    Connection conn=DriverManager.getConnection(url);
    PReparedStatement ps = conn.prepareStatement(sql);
    
    ResultSet rs = ps.executeQuery();
    while(rs.next())
    {
      user=(Users)ResultMapObject(rs);
      //TODO 可以使用user
    }

  映射對(duì)象樹(shù)。

    /*
    sale_orders銷售訂單表
    sale_order_details銷售訂單細(xì)表
    prodUCts商品表
    product_catalogs商品類別表
    從sql中就可以分析出
    id是主鍵
    sale_order_details.sale_order_id===>sale_orders.id
    sale_order_details.product_catalog_id==>product_catalogs.id
    sale_order_details.product_id==>products.id
     */
    String []sqls=new String []{
        " select id, total_sum, memo, state, modify_date, creator, checker from sale_orders ",
        " select id, sale_order_id, product_id, product_name, product_catalog_id, model, product_unit, product_amount, product_price, product_sum, memo from sale_order_details ",
        " select id, name, catalog, model, price, unit, memo, createtime, state, code, productno from products ",
        " select id, name, memo from product_catalogs"
    };
    //不帶XML映射的,但是無(wú)法得知一對(duì)一還是一對(duì)多還是多對(duì)多的關(guān)系,所以一律建成多對(duì)多關(guān)系。
    List l=SQLMapObjects(conn,sqls);
    /*
    l的結(jié)構(gòu):
    sale_orders[]
        -----sale_order_details[](sale_order_details.sale_order_id===>sale_orders.id)
                -----products[](sale_order_details.product_id==>products.id)
                -----product_catalogs[](sale_order_details.product_catalog_id==>product_catalogs.id)                
     */
  /*帶xml */



發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 久草中文网 | 久久久久久久久久久国产精品 | 高清在线国产 | 羞羞网站视频 | 日韩视频在线观看免费 | 在线播放免费人成毛片乱码 | 成人在线免费小视频 | 欧美黄色性视频 | 爽妇网国产精品 | 一本一道久久久a久久久精品91 | a视频在线播放 | 九色激情网 | 国产精品1区2区 | 亚洲最大久久 | 国产一级片91 | 911网站大全在线观看 | 91av大片 | 婷婷久久综合九色综合色多多蜜臀 | 成人福利视频导航 | 蜜桃av鲁一鲁一鲁一鲁 | 日韩做爰视频免费 | 久久国产精品久久久久久电车 | 午夜国内精品a一区二区桃色 | 黄色免费影片 | 午夜国内精品a一区二区桃色 | 国产草草视频 | 依依成人精品视频 | 国产一区二区三区高清 | 欧美第1页 | 偿还电影免费看 | 视频一区二区三区视频 | 日本在线视频免费 | 免费性爱视频 | 羞羞视频.www在线观看 | 黄网站在线观 | 一区二区三视频 | 爱高潮www亚洲精品 国产精品一区自拍 | 久久蜜臀一区二区三区av | 亚欧在线免费观看 | 欧洲成人综合网 | 91精品国产91|