Domino 如何整Hibernate最佳實務

來源:互聯網
上載者:User

標籤:hebernate   domino   mysql   

Domino 整合Hibernate後, Hibernate可以對資料庫(如Mysql)進行管理,能用對象模式來訪問資料庫內容,提高了開發效率。

本文通過執行個體代碼展現了在 Domino 與Hibernate,Mysql之間整合的具體步驟 , 同時講解了XPages 中如何去使用hibernate。

Hibernate簡介

Hibernate是一個開放原始碼的對象關係映射架構,它對JDBC進行了非常輕量級的對象封裝,使得Java程式員可以隨心所欲的使用對象編程思維來操縱資料庫。

Hibernate可以應用在任何使用JDBC的場合,既可以在Java的用戶端程式使用,也可以在Servlet/JSP的Web應用中使用,最具革命意義的是,Hibernate可以在應用EJB的J2EE架構中取代CMP,完成資料持久化的重任。

Hibernate能協助我們利用物件導向的思想,開發基於關係型資料庫的應用程式
第一:將對象資料儲存到資料庫
第二:將資料庫資料讀入對象中
Hibernate體繫結構:
一個非常簡要的Hibernate體繫結構的概要圖

 

從這個圖可以看出,Hibernate使用資料庫和配置資訊來為應用程式提供持久化服務(以及持久的對象)。

我們來更詳細地看一下Hibernate運行時體繫結構。 由於Hibernate非常靈活,且支援多種應用方案,所以我們這隻描述一下兩種極端的情況。

“輕型”的體繫結構方案,要求應用程式提供自己的JDBC 串連並管理自己的事務。這種方案使用了Hibernate API的最小子集:

整合步驟

在整合Hibernate的過程中,首先用eclplise搭建好hibernate環境,然後把整個項目打成jar包,把這個jar包添加到domino,給xpage調用。
Eclipse手動搭建Hibernate環境

1 首先使用eclipse建立一個java項目,在src目錄下添加lib目錄,在該目錄下添加Hibernate的jar包,由於jar包之間存在相互調用的關係,要注意所有的jar包版本需要一致,並且,要將資料庫驅動包拷到lib目錄下,在這裡我用的資料庫是MYSQL(mysql-connector-java-5.1.8-bin.jar)。最後,把lib目錄下的的jar包添加到構建路徑。

 2.建立hibernate.cfg.xml,這個檔案包含了Hibernate與資料庫的基本串連資訊。Configuration負責啟動hierbante,建立SessionFactory執行個體。SessionFactory介面負責初始化Hibernate,它充當資料來源的代理,並負責建立Session對象,用這個對象的方法對PO進行載入、儲存、更新、刪除等操作。

2 建立實體Bean類(SlwfPersonBean.java),也就是持久化對象(PO)。PO在Hibernate中存在三種狀態:臨時狀態(Transient),持久化狀態(Persistent),脫管狀態(Detached).當一個JavaBean對象在記憶體中孤立存在不與資料庫中的資料有任何關係時,那麼這個JavaBean對象就稱為TransientObject;當它與一個Session相關聯時,那就變成PersistentObject;在這個Session關閉時,這個對象也會脫離持久狀態,成為DetachedObject.1.3

3.建立對應檔(SlwfPerson.hbm.xml):用來把PO與資料庫中的表、PO之間的關係與資料表之間的關係以及PO的屬性與表欄位一一映射起來,它是Hibernate的核心檔案。

5.測試hibernate,搭建成功.

6.把整個項目匯出成jar檔案(HibernateTest.jar),選中項目,然後右擊選擇export,匯出類型為jar,選擇完成按鈕後,匯出成功。

Hibernate 整合到 Domino

方法1:
首先要把Designer切換到JAVA視圖
開啟Designer ,選擇視窗屬性,切換至java開發視圖。找到WEB_INF目錄,把jar包copy到lib目錄下,然後選中HibernateTest.jar右擊選擇構建路徑,把jar添加進去。這種方法,作為java開發人員,都會選擇這樣去做。


然後建立一個Xpage頁面,做測試。

在Designer裡,建立一個xpage頁面,在頁面中添加一個Button,寫Ls代碼去調用HibernateTest.jar,裡面的方法.


importPackage(com.gzsolar.util)// 如果你要調用某個類,須引入 JAR裡面的包名  importPackage(com.gzsolar.cnst)try{var unid = "";if(param.containsKey("unid")){unid = param.get("unid")}unid = ""var doc:NotesDocument = database.getDocumentByUNID("DD757E2D538C359F48257D0100068299");var instanceId = doc.getItemValueString("InstanceID");doc.replaceItemValue("InstanceStatusOS",InstanceStatus.Cancel);doc.save();var util:EngineUtils = new  EngineUtils() ;util.cancelInstance(instanceId); }catch(e){print(e);}

 接著,匯入jar包到ext目錄下

在整合的過程中,需要hibernate的jar包放到path:\IBM\Domino\jvm\lib\ext目錄下,這是最容易出錯的地方。在這裡你可能覺得導過來的HibernateTest.jar,裡面有這些包了,能不能不匯入呢,肯定不能,這樣會後台會報錯,提示沒有session這個類,在domino中找不到。



所以把hibernate用的包,放在ext目錄中,給domino進行編譯,才可以使用。
測試成功 :domino後台列印Hibernate 語句,myql表裡也添加了一條記錄,

方法2:
把HibernateTest.jar直接放在path:\IBM\Domino\jvm\lib\ext目錄下。然後重啟服務.




聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.