原始森林中的一個狼窩

          導(dǎo)航

          <2006年10月>
          24252627282930
          1234567
          891011121314
          15161718192021
          22232425262728
          2930311234

          留言簿(1)

          隨筆分類(22)

          隨筆檔案(23)

          文章檔案(1)

          閱讀排行榜

          評論排行榜

          常用鏈接

          統(tǒng)計

          積分與排名

          我的好友

          最新評論

          Hibernate Day_1

          Hibernate 英文的直意是冬眠的意思。

          Hibernate 是一個面向 Java 環(huán)境的對象 / 關(guān)系數(shù)據(jù)映射工具,注意,這是一種技術(shù)工具。

          ORM object relational mapping 這個術(shù)語表示一種技術(shù),用來把對象模型表示的對象映射到基于 SQL 的關(guān)系模型數(shù)據(jù)結(jié)構(gòu)中去。

          以上的這些概念性的東西,然我感覺和 .NET Framework 2.0 中的強(qiáng)類型數(shù)據(jù)集的作用差不多,但聽研究過的人說,要比 Microsoft 的那個好得多, Microsoft 的強(qiáng)類型數(shù)據(jù)集我用過,感覺爽,既然有說 Hibernate 更好,那已經(jīng)更是過癮,我心里癢癢的呀。繼續(xù)。。。

          書中有這樣一句“對于以數(shù)據(jù)為中心的程序來說,他們往往只在數(shù)據(jù)庫中使用存儲過程來實現(xiàn)商業(yè)邏輯, Hibernate 可能不是最好的解決方案。”這個是一定啦, Hibernate 是橋梁,又不是萬金油,當(dāng)然是在數(shù)據(jù)庫中直接用存儲過程處理商業(yè)邏輯是最好的啦。我做過,直接在存儲過程中搞定一切東西,傳一個參數(shù)過去,然后所有的運算都在 SQL Server 2000 的存儲過程中完成,那叫一個爽,比把數(shù)據(jù)讀到程序里,然后用 Java 處理,再把數(shù)據(jù)傳回去要快得多,但是在 SQL Server 2000 里直接用存儲過程來完成這樣的工作,難度還是不小的,調(diào)試就是最大的難點,反正我是沒整明白有啥辦法可以調(diào)試的,我就用最原始、最保靠,據(jù)說是也是有效的調(diào)試方法 print 來完成。哈哈。夠暈的吧!繼續(xù)看。。。

          現(xiàn)在看到了一個“持久化實體類”這個類是符合 JavaBean 的編寫要求。并且要給它一個唯一的標(biāo)識符,這是為了我們使用 Hibernate 提供的所有特性。大多數(shù)程序,特別是 web 程序,都需要通過標(biāo)識符來區(qū)分對象。但,通常我們不會直接操作對象的標(biāo)識符,所以他的 setter 方法的訪問級別是 private

          Hibernate 需要知道怎樣去加載( load )和存儲( store )持久化類的對象,映射文件,它就是告訴 Hibernate ,應(yīng)該訪問數(shù)據(jù)庫里面的哪個表,已經(jīng)應(yīng)該使用表里面哪些字段。

          Hibernate 不會從 web 加載 DTD 文件,但它會首先在應(yīng)用程序的 classpath 中查找。 DTD 文件包含在 hibernate3.jar 里,同時在 Hibernate 發(fā)布包的 src/ 目錄下。

          映射文件的長相: Event.hbm.xml

          <hibernate-mapping>

          ???? <classname="events.Event" table="Events">

          ??????????? <idname="id" column="eventID">

          ?????????????????? <generatorclass="native"/>

          ??????????? </id>

          ??????????? <propertyname="date" type="timestamp" column="eventDate"/>

          ??????????? <propertyname="title" column="eventTitle"/>

          ???? </class>

          </hibernate-mapping>

          ?

          說明:

          class 表示持久化類;

          id 表示唯一標(biāo)識;

          property 表示類的屬性字段;

          name 是持久化類名;

          table 是數(shù)據(jù)表名;

          column 是數(shù)據(jù)字段名;

          generator 是唯一標(biāo)識的生成方式;

          type 是映射的數(shù)據(jù)類型。

          ?

          Hibernate 配置文件的長相: hibernate.cfg.xml

          <!-- by MyEclipse Hibernate tool integration. -->

          <hibernate-configuration>

          ??? <session-factory>

          ??????? <!-- properties -->

          ??????? <propertyname="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>

          ??????? <propertyname="connection.url">jdbc:oracle:thin:@localhost:1521:test</property>

          ??????? <propertyname="connection.username">system</property>

          ??????????? ?<propertyname="connection.password">manager</property>

          ????????????????????????????????????????????????????????????????????

          ??????? <propertyname="dialect">net.sf.hibernate.dialect.OracleDialect</property>

          ??????? ???????????????????????????????????????????? ?????????????????

          ??????? <!-- mapping files -->

          ??????? <mappingresource="events/Event.hbm.xml"/>

          ?? ?</session-factory>

          </hibernate-configuration>

          ?

          說明:

          Session-factory :特定數(shù)據(jù)庫全局工廠

          connection.driver_class :驅(qū)動類

          connection.url :連接路徑

          connection.username :用戶名

          connection.password :用戶密碼

          mapping resource :持久化類加入映射文件

          ?

          ant 創(chuàng)建 build.xml

          我理解他就是管理文件位置的,就是拷貝,為編譯運行做準(zhǔn)備。

          ?

          SessionFactory 是一個線程安全的全局對象,只需要被實例化一次,一個 Session 代表一個單線程的單元操作。

          ?

          這時又來了一個輔助類 HibernateUtil ,負(fù)責(zé)啟動 Hibernate 和更好的操作 SessionFactory

          最后配置一個日志系統(tǒng), Log4j JDK 1.4 都可以選擇。

          ?

          看到了一種編程模型:線程綁定( thread-bound

          Session 在第一次被使用,或第一次調(diào)用 getCurrentSession() 的時候,其生命周期就開始了,然后它被 Hibernate 綁定到當(dāng)前線程。當(dāng)事務(wù)運行結(jié)束的時候,不管是提交、回滾, Hibernate 都會把 Session 從當(dāng)前線程剝離,并且關(guān)閉它。

          posted on 2006-10-19 18:28 白洋 閱讀(1682) 評論(1)  編輯  收藏 所屬分類: Hibernate 知識點滴

          評論

          # re: Hibernate Day_1 2006-10-20 17:54 壞男孩

          去我blog看看  回復(fù)  更多評論   


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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 孝感市| 旬邑县| 怀来县| 左贡县| 类乌齐县| 独山县| 本溪市| 铜鼓县| 岢岚县| 天台县| 会东县| 阿合奇县| 寿宁县| 桂林市| 平果县| 乌什县| 南投县| 拜城县| 大足县| 富顺县| 汶上县| 上虞市| 巍山| 巴塘县| 崇阳县| 福鼎市| 静宁县| 金溪县| 八宿县| 松江区| 安多县| 宜黄县| 马尔康县| 库伦旗| 临洮县| 扎赉特旗| 黎川县| 邵东县| 扶绥县| 汉阴县| 成安县|