費了一天,終於搞定了Hibernate和Weblogic81的集成安裝問題。網上資料或多或少涉及到了,但都不完整、具體。本文參考了 Java視線論壇版主的文章和hibernate網站的文章撰寫了本文,希望能對各位Hibernate初學者能有所幫助。
假設你的工程是D: estprj;D estprjlib存放所有的Hibernate的lib下的jar文件;D; estprjclasses存放所有的class文件,非凡包括一weblogic啟動類編寫的專用於建立hibernate的sessionfactory的class文件,還有hibernate.propties、log4j.properties、cache.ccf、oscache.properties四個配置文件;
D:eaweblogic81
1.首先第一步是修改配置weblogic啟動環境,添加hibernate的lib和class目錄到weblogic的classpath環境中,具體做法是:
找到 D:eauser_projectsdomainsmydomainstartWebLogic.cmd,添加如下紅色字體代碼到文件中:
set SERVER_NAME=caserver
set CLASSPATH=%WEBLOGIC_CLASSPATH%;%POINTBASE_CLASSPATH%;
%JAVA_HOME%jrelib
t.jar;%WL_HOME%serverlibwebservices.jar;%CLASSPATH%
@rem set hibernate classpath
set HIBERNATE_LIB=D estprjlib
set HIBERNATE_CLASSES=D estprjclasses
set CLASSPATH=%HIBERNATE_LIB%cglib-asm.jar;%HIBERNATE_LIB%cglib-full-2.0.1.jar;%HIBERNATE_LIB%ehcache-0.7.jar;%HIBERNATE_LIB%commons-beanutils.jar;%HIBERNATE_LIB%commons-logging-1.0.3.jar;%HIBERNATE_LIB%commons-collections-2.1.jar;%HIBERNATE_LIB%commons-lang.jar;%HIBERNATE_LIB%commons-logging.jar;%HIBERNATE_LIB%dom4j-full.jar;%HIBERNATE_LIB%jcs.jar;%HIBERNATE_LIB%log4j-1.2.8.jar;%HIBERNATE_LIB%odmg.jar;%HIBERNATE_LIB%dom4j-1.4.jar;%HIBERNATE_LIB%hibernate2.jar;%HIBERNATE_CLASSES%;%CLASSPATH%
@REM Call WebLogic Server
注重到網上有的網友同樣添加jar文件後可能有空格或換行符,出現了用WinRAR和weblogic不能正常啟動的現象,所以最好set CLASSPATH這一行一定要一行寫完,同樣jar文件名一定要和hibernate 的jar文件一致,否者,最後weblogic啟動時候,會出現找不到什麼class not found的現象。
2.利用weblogic的console配置一個jdbc pool,我采用的數據庫是sybase,以及一個datasource,datasource當然要用開頭的jdbc pool,我們假設它的jndi名稱為misdb。
3.修改hibernate的配置文件,hibernate的配置文件有兩個hibernate.propties和hibernate.cfg.XML,前一個是hibernate啟動後調用缺省初始化環境文件,後一個是可動態調整,比如說添加數據表的映射文件等等,如何添加的代碼,網上可以找的到,我這裡就不重復了,兩個配置文件有一個就可以了,在初始化hibernate,將hibernate幫定到weblogic的jndi,我們可以在第四步的weblogic啟動類源代碼中說明。
hibernate.propties文件配置文件配置比較簡單,而且數據庫的參數,很多都已經用注釋寫好了。真是太cool了。
這裡我們要用weblogic的數據源misdb.
修改添加如下代碼,切記,一定保證下面代碼唯一啊。
## HypersonicSQL
#hibernate.dialect net.sf.hibernate.dialect.HSQLDialect
#hibernate.connection.driver_class org.hsqldb.jdbcDriver
#hibernate.connection.username sa
#hibernate.connection.passWord
#hibernate.connection.url jdbc:hsqldb:hsql://localhost
#hibernate.connection.url jdbc:hsqldb:test
#hibernate.connection.url jdbc:hsqldb:.
綠色代碼一定要注釋掉,用#符號
hibernate.dialect net.sf.hibernate.dialect.SybaseDialect
hibernate.connection.datasource misdb
hibernate.connection.provider_class net.sf.hibernate.connection.DatasourceConnectionProvider
hibernate.session_factory_name hibernate.session_factory
hibernate.jdbc.fetch_size 50
hibernate.jdbc.batch_size 25
紅色代碼添加入,注重可能後面也有相應的參數配置,記住注釋掉
放心,附件會附代碼的
okay.文件配置完畢,記住要在d: estprjclasses目錄下;
4.編寫weblogic啟動類源程序,沒辦法,因為weblogic非凡,只能這樣建立hibernate 的sessionfactory,為什麼,因為下面這句
the JNDI implementation in WebLogic Server does not appear to support the Referenceable interface, and exhibits some rather strange behaviour when binding Serializable objects.
代碼要害兩句是
Configuration cfg = new Configuration();
SessionFactory factory = cfg.buildSessionFactory();
網上有些文章到不是不對,有的是直接映射了對象類,比如說cat類了,有的是用
Configuration cfg = new Configuration().configure();
記住此時就是用hibernate.cfg.xml 文件配置。