成長的歷程--JAVA

           

          記錄hibernate 3學習過程中的報錯(未完成)

          1。解壓縮hibernate-3.0beta1.zip文件
          2。copy msbase.jar,msutil.jar,mssqlserver.jar文件到hibernater-3.0/lib目錄下
          3。編輯etc/hibernate.properties(不在src目錄下)。如下:
          4。運行 hibernater-3.0/builder eg
          報錯如下:
           org.hibernate.HibernateException: could not instantiate CacheProvider: net.sf.hibernate.cache.HashtableCache.Provider

          吃虧了:hibernate2.jar和hibernate3.jar包結構完全不同了
          例如:hibernate2中的net.sf.hibernate.dialect.SQLServerDialect
          在hibernater3中變成了org.hibernate.dialect.SQLServerDialect


          報錯說:class not found : org.hsqldb.jdbcDriver
          在build.xml文件中發現以下這句話:

          將hsqldb.jar文件拷貝到hibernater-3.0/lib目錄下。

          在hibernate.properties文件中寫
          hibernate.dialect org.hibernate.dialect.SQLServerDialect
          hibernate.connection.username spitrade
          hibernate.connection.password spitechnhm

          hibernate.connection.driver_class com.microsoft.jdbc.sqlserver.SQLServerDriver
          hibernate.connection.url jdbc:microsoft:sqlserver://218.244.111.84:1433;DatabaseName=spitrade;SelectMethod=cursor

          去除HypersonicSQL的連接方法,好像成功連接了。

          怎么去建立數據庫?用Main方法去建立失敗,
          Exception in thread "main" java.lang.NoClassDefFoundError: org/hibernate/Session

          java org.hibernate.auction.Main
          缺少classpath cglib.jar hibernate3.jar ehcache.jar commons-collections-2.1.1.jar

          set classpath后
          報錯說:Not binding factory to JNDI, no JNDI name configured


          http://www.hibernate.org/114.html ---->  Using Hibernate with Tomcat and JNDI


          hibernate.connection.datasource jdbc/soos  失敗
          可能需要修改hibernate.cfg.xml文件 并增加jta.jar

          hibernate.properties not found
          將hibernate.properties文件放入classpath找得到的地方 成功。

          Could not find datasource: java:comp/env/jdbc/soos
          在hibernate.properties中必須寫hibernate.connection.datasource jdbc/soos



           

          hibernate2 升級hibernate3的需要注意的事項

          hibernate2 升級hibernate3的需要注意的事項

          (chinaewolf的工作日記)

          (chinaewolf的工作日記)

          目的,主要是那當前的項目練手,熟悉一下hibernate2和hibernate3的差別,給當前項目一點擴展的空間. 

          1.首先將hibernate2.jar替換為hibernate3.jar(hibernate-3.0.5)

          hibernate-tools.jar也替換成新的(從hibernate-tools-3.0.0.alpha4a找出來的)

          2.將所有程序中的net.sf.hibernate替換為org.hibernate.

          3.但是有例外

          net.sf.hibernate.expression.Expression換為org.hibernate.criterion.Expression

          如果用eclipse,ctrl+shift+o快捷鍵可以加快速度:)

          4.在使用hql查詢時將

          createSQLQuery(hql,"c",EZCampaignDTO.class);改為createSQLQuery(hql).addEntity("c",EZCampaignDTO.class);

          5.在批量插入時

          將原來的int size = ((SessionFactoryImpl)(session.getSessionFactory())).getJdbcBatchSize()

          改為int size = ((SessionFactoryImpl)(session.getSessionFactory())).getSettings().getJdbcBatchSize();

          6.在計算count

          將原來的int size = ((Integer) session.iterate(hql).next()).intValue();

          改為int size = ((Integer) session.createQuery(hql).iterate().next()).intValue();

          其中hql="select count(*) from " + DAOVar.contactClass;

          7.還有就是把.hbm中的hibernate-mapping-2.0.dtd替換為hibernate-mapping-3.0.dtd

          Hibernate Mapping DTD 2.0替換為Hibernate Mapping DTD 3.0

          8.hibernate.cfg.xml

          Hibernate Mapping DTD 2.0替換為Hibernate Mapping DTD 3.0

          <property name="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</property>

          9.hibernate.properties中類似

          10.cache-config.xml

          <provider className="net.sf.hibernate.cache.OSCacheProvider"/>替換為

          <provider className="org.hibernate.cache.OSCacheProvider"/>

          11.classeshibernate.properties

          hibernate.cache.provider_class=org.hibernate.cache.EhCacheProvider

          hibernate.dialect=org.hibernate.dialect.SQLServerDialect

          s,怎么這里還有

          還是用編輯器暴力替換一下吧干脆

          然后部署,集成測試,希望一切ok

          結果咣鐺,還是報錯

          12.在自動外部模塊部分有一個功能是根據模版自動生成.hbm文件在load,結果出來的.hbm中有問題:

          生成的 <composite-id unsaved-value="any" mapped="false">其中mapped="false" 出錯.

          找了半天才發現在網上的hibernate-mapping-3.0.dtd文件有支持mapped="false"這個屬性.而本地的hebernate3.0.5中的

          hibernate-mapping-3.0.dtd文件沒有這個屬性.,hibernate也太不負責了吧. 解決辦法把hibernate-mapping-3.0.dtd

           copyjboss\bin目錄下然后,template文件中

          <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN" "hibernate-mapping-3.0.dtd">

          然后他會在jboss\bin目錄下讀取該文件

          13.重新測試,還是咣鐺

          發現子類讀父類數據時拋出異常

          "org.hibernate.LazyInitializationException: could not initialize proxy"

          延遲抓取出的錯,hb3many-to-one的默認處理是lazy = "proxy"

          沒有搞懂到底怎么回事,把所有many-to-one,one-to-one都加上lazy="false"

          再測試終于大功告成


           

          ant-1.6.2.jarant-antlr-1.6.2.jarant-junit-1.6.2.jarant-launcher-1.6.2.jarant-swing-1.6.2.jar

          以上5個是hibernate需要的Ant包。

          ant-antlr-1.6.2.jar這個包中只包含org.apache.tools.ant.taskdefs.optional.ANTLR類。

          ant-launcher.jar中的class文件是幫助建立Antclasspath的。目前最好的方法是使用ant-launcher.jar 中的org.apache.tools.ant. launch.Launcher類來啟動Ant,雖然有些應用已經加入了Ant(例如Tomcat),但是它們仍然使用傳統的方法,即:用ant.jar包中的org.apache.tools.ant.Main類來啟動。

           

           

          antlr-2.7.4.jar

          ANTLR ANother Tool for Language Recognition)是一個PCCTS制定的語言工具。它是為創建認定者、程序編譯者、翻譯者提供一個包括JavaC#C++在內的語法描述框架。

           

           

          c3p0-0.8.4.5.jar

          c3p0是一個容易使用的java,用于擴充傳統的基于驅動管理的JDBC驅動和JNDI綁定數據源,包括執行ConnectionStatement Pooling的數據源。

           

           

          cglib-full-2.0.2.jar

          CGLCode Generation Library)是一種高性能、高質量的代碼產生庫。Hibernate用它來實現POPersistent Object)字節碼的動態生成。

          http://cglib.sourceforge.net/

           

           

          cleanimports.jar

          cleanimports是對java文件中的無用的imports作清理并通過配置文件提供的格式對imports代碼段進行格式整理。

          http://www.euronet.nl/users/tomb/cleanImports/V105/cleanImports.html

           

           

          commons-collections-2.1.1.jar

          Jakarta的通用collections包。包含了一些Apache開發的集合類。

           

           

          commons-logging-1.0.4.jar

          Jakarta的通用日志記錄包。

           

           

           

           

           

           

          concurrent-1.3.2.jar

          concurrent包提供標準化、高效的版本的實用的類,用于并行的Java程序。

          http://gee.cs.oswego.edu/dl/classes/EDU/oswego/cs/dl/util/concurrent/intro.html

           

           

          connector.jar

          JCAJ2EE Connector Architecture)規范的包

           

           

          dom4j-1.5.2.jar

          Dom4J是一個在Java平臺上使用Java Collections FrameworkXML XPathXSLT協同工作的開源Java庫,它全面支持DOMSAXJAXP

          DOM(Document Object Model)是一個與平臺和語言無關的接口,提供一個標準的模式來讀些XML文件。

          SAX Simple API for XML,相比于文檔對象模型DOMSAX 是讀取和操作 XML 數據的更快速、更輕量的方法。

          JAXPJava API for XML Parsing

           

           

          ehcache-1.1.jar

          EHCache 是一個純java的在進程中的緩存,它具有以下特性:快速,簡單,為Hibernate2.1充當可插入的緩存,最小的依賴性,全面的文檔和測試。

          官方網站 http://ehcache.sourceforge.net/

           

          hsqldb.jar

          Hsqldb是一個用java寫的帶有JDBC驅動的關系數據庫引擎,它支持ANSI-92 SQL子集規范(BNF樹形格式),它一般來說是很小的(小于160K,但速度很快的數據引擎,它提供了基于內存和磁盤的表,具有內嵌和服務模式。另外,它還包括許多工具,例如:小型web服務,基于內存的查詢和管理工具(能夠運行在applet上),許多演示例子。

          官方網址:http://hsqldb.sourceforge.net/

           

           

          jaas.jar

          JAASJava Authentication and Authorization ServiceJava認證和授權服務。它是多個Java包的集合,具有授權和加強了基于用戶的訪問控制能力的服務。是基于Java平臺的針對不同認證和授權服務的框架。是一個Java平臺的安全機制。

           

           

          jaxen-1.1-beta-4.jar

          jaxen是一個用Java開發的XPath 引擎用于配合各種基于XML的對象模型DOM dom4j JDOM以及Java Beans

           

           

          jboss-cache.jar

          JBossCache是一個復制的事務處理緩存它允許你緩存企業級應用數據來更好的改善性能。緩存數據被自動復制讓你輕松進行JBoss服務器之間的集群工作。JBossCache能夠通過JBoss應用服務或其他J2EE容器來運行一個MBean服務,當然,它也能獨立運行。
          JBossCache
          包括兩個模塊:TreeCacheTreeCacheAOP
          TreeCache --
          是一個樹形結構復制的事務處理緩存。
          TreeCacheAOP --
          是一個面向對象緩存,它使用AOP來動態管理POJO(Plain Old Java Objects)
          注:AOPOOP的延續,是Aspect Oriented Programming的縮寫,意思是面向方面編程。
          官方網站 http://www.jboss.org/products/jbosscache

           

           

          jboss-common.jar

          jboss通用包

           

           

          jboss-jmx.jar

          JMX(Java Management Extensions)是一個為應用程序植入管理功能的框架。JMX是一套標準的代理和服務,實際上,用戶可以在任何Java應用程序中使用這些代理和服務實現管理。

          Jboss-jmx就是針對Jboss開發的JMX框架。

           

           

          jboss-system.jar

          jboss系統包

           

           

          jdbc2_0-stdext.jar

          JDBC2.0

           

          jgroups-2.2.7.jar

          JGroups 是一個可靠的多點傳送通訊工具包它不只是基于IP Multicast協議它同時也基于UDP , TCP, JMS 等傳輸協議。它能夠創建一組進程,進程的成員之間能夠互相發送消息。

           

          jta.jar

          Java Transaction API (JTA) 規范的包是指定事務處理管理和分布式事務處理系統之間的標準Java接口包括資源管理應用服務事務應用程序。

           

           

          junit-3.8.1.jar

          Java測試工具包

           

          log4j-1.2.9.jar

          Java日志包

           

           

          oscache-2.0.2.jar

          OSCache是個一個廣泛采用的高性能的J2EE緩存框架,OSCache能用于任何Java應用程序的普通的緩存解決方案。
          OSCache
          有以下特點:
          緩存任何對象,你可以不受限制的緩存部分jsp頁面或HTTP請求,任何java對象都可以緩存。
          擁有全面的API--OSCache API給你全面的程序來控制所有的OSCache特性。
          永久緩存--緩存能隨意的寫入硬盤,因此允許昂貴的創建(expensive-to-create)數據來保持緩存,甚至能讓應用重啟。
          支持集群--集群緩存數據能被單個的進行參數配置,不需要修改代碼。
          緩存記錄的過期--你可以有最大限度的控制緩存對象的過期,包括可插入式的刷新策略(如果默認性能不需要時)。
          官方網站 http://www.opensymphony.com/oscache/

           

           

          proxool-0.8.3.jar

          ProxoolJava數據庫連接池,它能向存在的JDBC驅動中透明的增加數據庫連接池。

           

           

          swarmcache-1.0rc2.jar

          SwarmCache是一個簡單且有效的分布式緩存,它使用IP multicast與同一個局域網的其他主機進行通訊,是特別為集群和數據驅動web應用程序而設計的。SwarmCache能夠讓典型的讀操作大大超過寫操作的這類應用提供更好的性能支持。
          SwarmCache
          使用JavaGroups來管理從屬關系和分布式緩存的通訊。
          官方網站 http://swarmcache.sourceforge.net

           

           

          versioncheck.jar

          hibernate版本檢測包

           

           

          xalan-2.6.jar

          Xalan名稱來自于一種罕見的樂器。

          Xalan-Java是一個將XML轉換成HTMLtext或其他XML文件類型的XSLTXSL Transformations)處理機制。它使用XSL Transformations (XSLT) Version 1.0 and XML Path Language (XPath) Version 1.0。它在命令行方式、appletservlet、或其他程序的模塊中都可以使用。

          Xalan同時構建于SAX2DOM level 2上。

          官方網站;http://xml.apache.org/xalan-j/

           

           

          xerces-2.6.2.jar

          Xerces(名稱來源于一種叫Xerces Blue的蝴蝶)提供世界級的XML解析和產生。充分驗證的語法分析可用于JavaC++,執行W3CXMLDOM(Level1 and 2)標準,以及SAXversion 2)標準。其語法具有高模塊化和可配置化。同時提供支持XML SchemaW3C標準草案)。

           

           

          xml-apis.jar

          XML

           

          在Hibernate有一些相當方便的輔助工具: hbm2java,hbm2ddl, 數據庫的逆向工程,Mapping Editor.

          這些任務可以通過Ant構建完成,Hibernate提供了Ant Tasks及其構建腳本.由于Hibernate從2到3進行了重大重構,且包重新做了組織,因此Ant構建腳本也發生了巨大變化.在2中腳本樣式為:

          <?xml version="1.0"?>
          <project name="anto builder"
                   default="db" basedir=".">

            <!-- Set up properties containing important project directories -->
            <property name="source.root" value="src"/>
            <property name="class.root" value="classes"/>
            <property name="lib.dir" value="lib"/>
            <property name="data.dir" value="data"/>

            <!-- Set up the class path for compilation and execution -->
            <path id="project.class.path">
                <!-- Include our own classes, of course -->
                <pathelement location="${class.root}" />
                <!-- Include jars in the project library directory -->
                <fileset dir="${lib.dir}">
                  <include name="*.jar"/>
                </fileset>
            </path>

            <target name="db" description="Runs HSQLDB database management UI
          against the database file--use when application is not running">
                <java classname="org.hsqldb.util.DatabaseManager"
                      fork="yes">
                   <classpath refid="project.class.path"/>
                   <arg value="-driver"/>
                   <arg value="org.hsqldb.jdbcDriver"/>
                   <arg value="-url"/>
                   <arg value="jdbc:hsqldb:${data.dir}/music"/>
                   <arg value="-user"/>
                   <arg value="sa"/>
                </java>
            </target>

            <!-- Teach Ant how to use Hibernate's code generation tool -->
            <taskdef name="hbm2java"
                     classname="net.sf.hibernate.tool.hbm2java.Hbm2JavaTask"
                     classpathref="project.class.path"/>

            <!-- Generate the java code for all mapping files in our source tree -->
            <target name="codegen"
                    description="Generate Java source from the O/R mapping files">
              <hbm2java output="${source.root}">
                <fileset dir="${source.root}">
                  <include name="**/*.hbm.xml"/>
                </fileset>
              </hbm2java>
            </target>

            <!-- Create our runtime subdirectories and copy resources into them -->
            <target name="prepare" description="Sets up build structures">
              <mkdir dir="${class.root}"/>

              <!-- Copy our property files and O/R mappings for use at runtime -->
              <copy todir="${class.root}" >
                <fileset dir="${source.root}" >
                  <include name="**/*.properties"/>
                  <include name="**/*.hbm.xml"/>
                </fileset>
              </copy>
            </target>

            <!-- Compile the java source of the project -->
            <target name="compile" depends="prepare"
                    description="Compiles all Java classes">
              <javac srcdir="${source.root}"
                     destdir="${class.root}"
                     debug="on"
                     optimize="off"
                     deprecation="on">
                <classpath refid="project.class.path"/>
              </javac>
            </target>

            <!-- Generate the schemas for all mapping files in our class tree -->
            <target name="schema" depends="compile"
                    description="Generate DB schema from the O/R mapping files">

              <!-- Teach Ant how to use Hibernate's schema generation tool -->
              <taskdef name="schemaexport"
                       classname="net.sf.hibernate.tool.hbm2ddl.SchemaExportTask"
                       classpathref="project.class.path"/>

              <schemaexport properties="${class.root}/hibernate.properties"
                            quiet="no" text="no" drop="no">
                <fileset dir="${class.root}">
                  <include name="**/*.hbm.xml"/>
                </fileset>
              </schemaexport>
            </target>
          </project>

          在3中,構建腳本為:

          <?xml version="1.0" encoding="GBK"?>
          <project name="Hibernate" default="anthbm2java" basedir=".">
           <property name="src.dir" value="./src" />
           <property name="class.dir" value="./bin" />
           <property name="lib.dir" value="D:/eclipse/plugins/org.hibernate.eclipse_3.0.0.alpha4/lib" />
           <path id="project.class.path">
            <fileset dir="${lib.dir}">
             <include name="*.jar"/>
            </fileset>
            <pathelement location="${class.dir}" />
           </path>
           <path id="tasks.classpath">
            <fileset dir="${lib.dir}">
             <include name="*.jar"/>
            </fileset>
            <pathelement location="${class.dir}" />
           </path>

           <target name="anthbm2java">
                 <taskdef name="hibernatetool"
            classname="org.hibernate.tool.ant.HibernateToolTask"
            classpathref="tasks.classpath"/>
                 <hibernatetool destdir="${class.dir}">
                  <configuration configurationfile="hibernate.cfg.xml" >
                     <fileset dir="${src.dir}">
                       <include name="**/*.hbm.xml" />
                     </fileset> 
                   </configuration>
                   <hbm2ddl export="false" console="false" create="true" update="false" drop="false" outputfilename="broad.sql" delimeter=";"/>  其中的delimeter屬性不支持.
                  <hbm2java generics="true" ejb3="false"/>
                  <cfg2hbm/>
                  <!--
                  <cfg2cfgXml/>  這個任務在Hibernate-Tool A5版本中不支持.
                  <hbm2doc/>     同樣在這個版本中有問題.
                  --> 
                 </hibernatetool>  
           </target>
          </project>

          這個腳本在Eclipse中檢驗過.

          通過這個腳本,執行了很多Hibernate輔助工具的功能,方便了開發.

          關于這些內容的參考可見:

          posted on 2005-09-06 09:54 夏青松 閱讀(3165) 評論(0)  編輯  收藏 所屬分類: hibernate


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


          網站導航:
           

          導航

          統計

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          搜索

          最新評論

          主站蜘蛛池模板: 柏乡县| 辽阳市| 瓦房店市| 湛江市| 平遥县| 台山市| 大安市| 新乐市| 镇宁| 肇庆市| 牙克石市| 苍山县| 辉南县| 永安市| 大埔县| 聂拉木县| 普安县| 楚雄市| 潮安县| 茌平县| 乌审旗| 怀来县| 高台县| 通渭县| 北海市| 万全县| 吴川市| 禄劝| 洛浦县| 舞钢市| 邹平县| 长顺县| 内黄县| 广东省| 牡丹江市| 会昌县| 攀枝花市| 淳安县| 定陶县| 上犹县| 佛冈县|