在web dynpro7.1 引用extenal lib

在web dynpro7.1中使用Hibernate

1. 簡介

在CE7.1中使用Hibernate跟在7.0中使用基本類似。第一步要建一個lib,用於存放jar包;第二步要建一個j2ee的工程,用於發佈jar包;第三步建使用Hibernate的工程,如web dynpro工程。下面是詳細說明,以及一些抓圖。

2. 第一步建lib工程

1. 創建lib工程(注意:創建的是local的DC)

 

圖X 新建Local的DC

 

圖X 新建Local的lib包


2. 將非Hibernate的包(如:hep_tdm_hibernate.jar、deepSOFTcom METHOD.jar)拷貝到libraries目錄下,然後添加到public part下。Public part有兩個:libCom(類型:COMPILATION)、libAss(類型:ASSEMBLY)。

 s

 

圖X 將lib包添加到Public Part

 

 d

圖X  Public Part設置狀況

 

 


3. 第二步建J2EE工程

1. 新建J2EE工程

 d

 

圖X  新建Loacl的J2EE

 d

 

圖X  新建Loacl的J2EE

 


2. 設置J2EE工程屬性

 d

 

圖X  設置J2EE工程的屬性(鉤上Sap Application Library Container項)

 

3. 添加Used DC

 d

 

圖X  添加Used DC

 d

 

圖X  添加Used DC後設置(libAss和libCom的Build Time項都要鉤上)

 

4. 新建public part(appCom類型:COMPILATION、appAss類型:ASSEMBLY)

d 

 

圖X  J2EE工程新建pablic part

 

5. J2EE工程打包以及部署。將Hibernate包手動加入到demo.sap.com~apptesthib.ear文件中

 d

 

圖X  Build工程後生成的ear文件

d 

 

圖X 將存放Hibernate的lib添加到ear文件中(之後纔可以部署)

 

 d

 

圖X  lib文件夾下Hibernate包情況

 

4. 第三步建web dynpro調用工程

1. 建Local的web dynpro工程DC

 d

圖X  新建Local的Web Dynpro工程

 

2. 添加引用。需要添加lib工程和J2EE工程(如果不添加lib工程,build時build不過去;如果不添加J2EE工程,運行的時候找不到Hibernate)。

 d

 

圖X  在Used DC中添加lib和j2ee的public part(兩個DC屬性設置一樣)

 

 d

圖X  設置屬性(所有Public part的Build Time項都要鉤上)

3. 使用Hibernate

現在就可以使用Hibernate了,下面是一段調用例子

try{

    HibernateDao myDao = new HibernateDao();

    String hSql = "from TdmAudiInfo order by itemNo desc";

    List list = myDao.hqlQuery(hSql, null, 0, 5);

   

    if(list==null || list.size()==0)

        wdComponentAPI.getMessageManager().reportWarning("no record");

    else{

        for(int i=0; i<list.size(); i++){

            TdmAudiInfo obj = (TdmAudiInfo)list.get(i);

            //********************************************

            //使用Hibernate對象;

            //********************************************

        }

    }   

}catch(Exception ex){

    ex.printStackTrace();

}

 

4. 性能感受

d 

 

圖X  從數據中查詢10000條記錄並顯示

機器配置:後臺查詢的表有43個字段,字段定義基本是VARCHAR2(254)。數據庫是Oracle10g,存於一臺普通的pc服務器(兩核,3.5G內存)。7.1CE服務器(WAS)是在另一臺PC機器上(P4,2G內存)。

當查詢10000條數據時,用時11秒。時間大部分是用在was服務器讀數據庫上(此時讀的是所有列,顯示到前臺時只有6列)。Table沒有分頁,10000條數據完全顯示,點擊時,響應速度1秒多一點,感覺還可以。

 

5. 使用感受

在Web Dynpro7.1中使用Hibernate,感覺還是比較好用的。性能方面,因爲hibernate要創建大量的線程,所以每次部署完J2EE工程之後最好能重啓一下WAS,否則可能會報下面的錯誤:

{0}#1#java.lang.OutOfMemoryError: unable to create new native thread

       at java.lang.Thread.start0(Native Method)

       at java.lang.Thread.start(Thread.java:704)

       at net.sf.ehcache.store.DiskStore.<init>(DiskStore.java:157)

       at net.sf.ehcache.Cache.initialise(Cache.java:269)

       at net.sf.ehcache.CacheManager.addCacheNoCheck(CacheManager.java:333)

       at net.sf.ehcache.CacheManager.addCache(CacheManager.java:325)

       at net.sf.ehcache.CacheManager.addCache(CacheManager.java:310)

       at org.hibernate.cache.EhCacheProvider.buildCache(EhCacheProvider.java:104)

       at org.hibernate.cache.CacheFactory.createCache(CacheFactory.java:61)

       at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:203)

       at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1152)

       at com.hep.tdm.dao.HibernateSessionFactory.rebuildSessionFactory(HibernateSessionFactory.java:61)

       at com.hep.tdm.dao.HibernateSessionFactory.getSession(HibernateSessionFactory.java:43)

       at com.hep.tdm.dao.HibernateDao.<init>(HibernateDao.java:55)

       at com.sap.demo.test.testhibernate.test.TestView.onActionTestHibernate(TestView.java:195)

       at com.sap.demo.test.testhibernate.test.wdp.InternalTestView.wdInvokeEventHandler(InternalTestView.java:128)

來自 http://blog.csdn.net/net520/article/details/3915207

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章