隨筆-40  評論-66  文章-0  trackbacks-0

          ORM
          Object Relation Mapping
          對象 關(guān)系 映射

          對象 指實(shí)體域?qū)ο?br />關(guān)系 關(guān)系數(shù)據(jù)


          模型

          概念模型(實(shí)體-屬性)
          關(guān)系數(shù)據(jù)模型(關(guān)系數(shù)據(jù)庫)
          域模型(對象)


          軟件分層

          v - 表述層
          c /

          ??? /業(yè)務(wù)層
          m- 持久層(hibernate 技術(shù)實(shí)現(xiàn))
          ??? \數(shù)據(jù)層


          mvc 對應(yīng) 各層次


          概念實(shí)體關(guān)系

          1對1
          1對多
          多對多


          表與表之間的關(guān)系 參照完整性

          外鍵
          多對多
          多對一


          域?qū)ο笾g的 關(guān)系

          關(guān)聯(lián) (一對一 一對多 多對多)
          依賴 (一個類需要訪問另外一個類)
          聚集 (一個類的對象是另一個類的一部分, 人和手)
          一般化 (繼承關(guān)系)


          域?qū)ο?br />?實(shí)體域?qū)ο? (實(shí)體EJB,POJO)
          過程域?qū)ο? (會話EJB,消息驅(qū)動EJB,POJO)
          事件域?qū)ο? ()

          在hibernate中 一般只關(guān)注 實(shí)體域?qū)ο?和 過程域?qū)ο?/p>


          域?qū)ο蟮年P(guān)系

          ?域?qū)ο蟮年P(guān)聯(lián)關(guān)系 是有方向的
          體現(xiàn)在類的編碼不一樣的

          單向關(guān)聯(lián)
          雙向關(guān)聯(lián)

          ?


          域?qū)ο蟮某志没?br />把對象從內(nèi)存中 保存到持久化設(shè)備中去

          ORM 與? ORM模式
          ORM模式是一種持久化技術(shù),還有其他模式的持久化技術(shù)。如主動域模式(BMP),JDO模式,CMP模式。


          域模型和數(shù)據(jù)模型的各個不匹配之處
          1,繼承
          2,多對多
          3,雙向
          4。粒度
          盡量少連接查詢,很消耗時間的操作

          ?


          創(chuàng)建持久化類


          1。持久化類符合javabean的規(guī)范,包含一些屬性 以及對應(yīng)的getxxx 色天下學(xué)習(xí)方法
          2。持久化類有一個id屬性,用來唯一表示類的每一個對象。 也叫OID 對象表示符
          3。Hibernate要求持久化類必須提供一個不帶參數(shù)的默認(rèn)構(gòu)造方法

          創(chuàng)建數(shù)據(jù)庫schema

          創(chuàng)建對象-關(guān)系映射文件

          (一般在eslispe中先創(chuàng)建數(shù)據(jù)庫 然后再創(chuàng)建持久化類以及映射文件)

          hibernate 映射類型


          hibernate的初始化

          static{

          try{
          //根據(jù)默認(rèn)位置的hibernate配置文件創(chuàng)建 configuration實(shí)例
          Configuration config = new Configuration();
          config.addClass(Customer.class);
          //創(chuàng)建SessionFactory 實(shí)例
          sessionFactory = config.buildSessinoFactroy();
          }catch(Exception e){e.printStackTrace();}
          }


          SessionFactory 接口

          一個SessionFactory 實(shí)例是對應(yīng)一個數(shù)據(jù)源的,應(yīng)用從SessionFactory 獲取session實(shí)例對象
          1線程安全的
          2重量級的,不能隨意創(chuàng)建和銷毀她的實(shí)例。

          Session 接口

          1 Session接口是hibernate應(yīng)用最為廣泛的接口。
          2 Session也被稱為持久化管理器,它提供和持久化相關(guān)的操作
          3 Session有以下特點(diǎn)
          ?a 不是線程安全的 所以應(yīng)避免多線程共用一個Session實(shí)例
          ?b Session實(shí)例是輕量級的,所謂輕量級是指他的創(chuàng)建和銷毀不需要消耗太多的資源。意味著程序中可以經(jīng)常創(chuàng)建和銷毀Session實(shí)例,保證不多線程使用Session對象。

          Session接口的常用方法:
          save()
          update()
          delete()
          load()

          Session執(zhí)行事務(wù)流程

          Session session = factory.openSession();
          Transaction tx;
          try{
          tx = session.beginTranscation();
          //執(zhí)行事務(wù)
          ...
          //提交事務(wù)
          tx.commit();
          }
          catche(Exception e)
          {//如果出現(xiàn)異常,撤消事務(wù)
          if(tx!=null)tx.rollback();
          throw e;
          }
          finally{
          session.close(); //不管事務(wù)是否成功,最后都要關(guān)閉session對象
          }
          }

          ?

          ?

          ?

          ?

          posted on 2007-02-07 14:32 Super·shen BLOG 閱讀(421) 評論(0)  編輯  收藏 所屬分類: JAVA技術(shù)
          主站蜘蛛池模板: 沅江市| 江城| 太湖县| 都匀市| 大荔县| 中山市| 乌审旗| 信阳市| 上思县| 宜兰县| 大同市| 寿宁县| 贵港市| 武定县| 牙克石市| 石城县| 淳安县| 彰武县| 岳普湖县| 武定县| 龙门县| 南平市| 阿尔山市| 阿荣旗| 广宁县| 佳木斯市| 城固县| 万安县| 噶尔县| 灵石县| 广州市| 佛坪县| 射阳县| 中方县| 措勤县| 环江| 探索| 四子王旗| 金溪县| 老河口市| 留坝县|