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

          ORM
          Object Relation Mapping
          對象 關系 映射

          對象 指實體域對象
          關系 關系數據


          模型

          概念模型(實體-屬性)
          關系數據模型(關系數據庫)
          域模型(對象)


          軟件分層

          v - 表述層
          c /

          ??? /業務層
          m- 持久層(hibernate 技術實現)
          ??? \數據層


          mvc 對應 各層次


          概念實體關系

          1對1
          1對多
          多對多


          表與表之間的關系 參照完整性

          外鍵
          多對多
          多對一


          域對象之間的 關系

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


          域對象
          ?實體域對象? (實體EJB,POJO)
          過程域對象? (會話EJB,消息驅動EJB,POJO)
          事件域對象? ()

          在hibernate中 一般只關注 實體域對象 和 過程域對象


          域對象的關系

          ?域對象的關聯關系 是有方向的
          體現在類的編碼不一樣的

          單向關聯
          雙向關聯

          ?


          域對象的持久化
          把對象從內存中 保存到持久化設備中去

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


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

          ?


          創建持久化類


          1。持久化類符合javabean的規范,包含一些屬性 以及對應的getxxx 色天下學習方法
          2。持久化類有一個id屬性,用來唯一表示類的每一個對象。 也叫OID 對象表示符
          3。Hibernate要求持久化類必須提供一個不帶參數的默認構造方法

          創建數據庫schema

          創建對象-關系映射文件

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

          hibernate 映射類型


          hibernate的初始化

          static{

          try{
          //根據默認位置的hibernate配置文件創建 configuration實例
          Configuration config = new Configuration();
          config.addClass(Customer.class);
          //創建SessionFactory 實例
          sessionFactory = config.buildSessinoFactroy();
          }catch(Exception e){e.printStackTrace();}
          }


          SessionFactory 接口

          一個SessionFactory 實例是對應一個數據源的,應用從SessionFactory 獲取session實例對象
          1線程安全的
          2重量級的,不能隨意創建和銷毀她的實例。

          Session 接口

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

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

          Session執行事務流程

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

          ?

          ?

          ?

          ?

          posted on 2007-02-07 14:32 Super·shen BLOG 閱讀(421) 評論(0)  編輯  收藏 所屬分類: JAVA技術
          主站蜘蛛池模板: 五台县| 保定市| 浠水县| 蒙山县| 扶余县| 白水县| 怀宁县| 子长县| 顺义区| 新巴尔虎左旗| 黄山市| 宁德市| 晴隆县| 临洮县| 板桥市| 洞头县| 昔阳县| 乌兰察布市| 蒙阴县| 衡阳县| 利津县| 大城县| 墨玉县| 合水县| 神农架林区| 诸暨市| 屏东市| 东兰县| 汾西县| 资阳市| 池州市| 会理县| 冀州市| 阆中市| 赤峰市| 福清市| 汝阳县| 南部县| 镇巴县| 陇川县| 巩留县|