• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    hibernate+junit+Middlegen入門

    發布: 2007-6-06 17:33 | 作者: 網絡轉載 | 來源: 網絡 | 查看: 305次 | 進入軟件測試論壇討論

    領測軟件測試網

    摘要:
     本文介紹了一個簡單的 hibernate+junit+Middlegen的sample.

     1.準備

     軟件準備
     C:\hibernate>dir
     驅動器 C 中的卷是 本地磁盤
     卷的序列號是 08DF-03E4

    C:\hibernate 的目錄
     2005-03-22 11:23 <DIR> .
     2005-03-22 11:23 <DIR> ..
     2005-03-20 17:14 <DIR> apache-ant-1.6.1
     2005-03-21 11:59 <DIR> hibernate-2.1
     2005-03-21 08:56 <DIR> hibernate-extensions
     2005-02-17 18:14 <DIR> hibernate_handbible
     2005-03-21 08:52 <DIR> Middlegen-Hibernate-r5
      0 個文件 0 字節
      7 個目錄 1,531,150,336 可用字節

    C:\hibernate>
     下載Hibernate、Hibernate-Extension和Middlegen-Hibernate軟件包的最新版本。
     http://prdownloads.sourceforge.net/hibernate/

    還需要連接sqlserver的jar包,我用的是sf.net 上的 jtds-0.9.jar(放在C:\hibernate\Middlegen-Hibernate-r5\lib下)

    set Path =%Path%;C:\hibernate\apache-ant-1.6.1\bin 為后面ant做準備。

    2.數據庫和配置
     數據庫為MS Sqlserver, 庫名:testbook
     sql腳本:

    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[book]') and OBJECTPROPERTY
    (id, N'IsUserTable') = 1)
    drop table [dbo].[book]GO
    CREATE TABLE [dbo].[book] (
     [id] [int] IDENTITY (1, 1) NOT NULL ,
     [book] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
     [sn] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL
    ) ON PRIMARY
    GO

    入MiddleGen 目錄下的\config\database 子目錄,根據我實際采用的數據庫打開對應的配置文件。如這里我們用的是mssql數據庫,對應的就是mssql.xml文件。

    C:\hibernate\Middlegen-Hibernate-r5\config\database>type mssql.xml

    <!-- =================================================================== -->
    <!-- ant properties/targets for MS SQL Server -->
    <!-- note: this is not a proper xml file (there is no root element) -->
    <!-- it is intended to be imported from a *real* xml file -->
    <!-- =================================================================== -->
    <property name="database.script.file" value=""/>
    <property name="database.driver.file" value="${lib.dir}/jtds-0.9.jar"/>
    <property name="database.driver" value="net.sourceforge.jtds.jdbc.Driver"/>
    <property name="database.url" value="jdbc:jtds:sqlserver://127.0.0.1:1433/testbook"/>
    <property name="database.userid" value="sa"/>
    <property name="database.password" value="zh1107"/>
    <property name="database.schema" value="dbo"/>
    <property name="database.catalog" value="testbook"/>
    <property name="jboss.datasource.mapping" value="MS SQLSERVER"/>

    改build.xml 為符合自己的配置
     C:\hibernate\Middlegen-Hibernate-r5>type build.xml

    <?xml version="1.0"?>
    <!DOCTYPE project [
      <!ENTITY database SYSTEM "file&:./config/database/mssql.xml">]>
    <property name="name" value="HibernateSample"/>

    然后
     C:\hibernate\Middlegen-Hibernate-r5>ant
     出來圖形界面,可以不作修改,點擊上面的gen,然后退出。

    C:\hibernate\Middlegen-Hibernate-r5\build\gen-src>dir

    2005-03-22 18:50 <DIR> .
     2005-03-22 18:50 <DIR> ..
     2005-03-22 17:21 <DIR> HibernateSample
     0 個文件 0 字節
     3 個目錄 1,528,754,176 可用字節

    我們所要的 .hbm.xml 就出來了(在HibernateSample目錄里)

    然后到
     C:\hibernate\hibernate-extensions\tools\bin>type setenv.bat

    @echo off
    set HIBERNATE_HOME=C:\hibernate\hibernate-2.1 (改)
    echo HIBERNATE_HOME set to %HIBERNATE_HOME%
    set JDBC_DRIVER=C:\hibernate\hibernate-extensions\lib\jtds-0.9.jar (改)
    echo JDBC_DRIVER set to %JDBC_DRIVER%
    set HIBERNATETOOLS_HOME=%~dp0..
    echo HIBERNATETOOLS_HOME set to %HIBERNATETOOLS_HOME%
    if "%HIBERNATE_HOME%" == "" goto noHIBERNATEHome
    set CORELIB=%HIBERNATE_HOME%\lib
    set LIB=%HIBERNATETOOLS_HOME%\lib
    set CP=%CLASSPATH%;%JDBC_DRIVER%;%HIBERNATE_HOME%\hibernate2.jar;%CORELIB%\commo
    ns-logging-1.0.3.jar;%CORELIB%\commons-lang-1.0.1.jar;%CORELIB%\cglib-2.0-rc2.jar;%CORELIB%\dom4j-1.4.jar;%CORELIB%\odmg-3.0.ja
    r;%CORELIB%\xml-apis.jar;%CORELIB
    %\xerces-2.4.0.jar;%CORELIB%\xalan-2.4.0.jar;%LIB%\jdom.jar;%CORELIB%\commons-co
    llections-2.1.jar;%LIB%\..\hibernate-tools.jar;
    if not "%HIBERNATE_HOME%" == "" goto end
    :noHIBERNATEHome
    echo HIBERNATE_HOME is not set. Please set HIBERNATE_HOME.
    goto end
    :end

    C:\hibernate\hibernate-extensions\tools\bin>

    生成PO
     C:\hibernate\Middlegen-Hibernate-r5\build\gen-src\HibernateSample\hibernate>C:\h
    ibernate\hibernate-extensions\tools\bin\hbm2java.bat *.xml --output=.

    HIBERNATE_HOME set to C:\hibernate\hibernate-2.1
     JDBC_DRIVER set to C:\hibernate\hibernate-extensions\lib\jtds-0.9.jar
     HIBERNATETOOLS_HOME set to C:\hibernate\hibernate-extensions\tools\bin\..
     2005-3-22 19:01:44 net.sf.hibernate.tool.hbm2java.Generator generate
     信息: Generating 1 in .

    然后整理得:
     C:\hibernate\Middlegen-Hibernate-r5\build\gen-src\HibernateSample\hibernate>dir
     驅動器 C 中的卷是 本地磁盤
     卷的序列號是 08DF-03E4

    C:\hibernate\Middlegen-Hibernate-r5\build\gen-src\HibernateSample\hibernate 的目錄

    2005-03-22 19:04 <DIR> .
     2005-03-22 19:04 <DIR> ..
     2005-03-22 19:04 865 Book.hbm.xml
     2005-03-22 19:01 1,148 Book.java
     2 個文件 2,013 字節
     2 個目錄 1,528,754,176 可用字節

    3.應用hibernate
     在classpath配置 hibernate.cfg.xml

    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE hibernate-configuration
    PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"
    "http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd";>
    <hibernate-configuration>
    <!-- SessionFactory 配置 -->
    <session-factory>
    <!-- 數據庫URL -->
    <property name="hibernate.connection.url">
    jdbc:jtds:sqlserver://127.0.0.1:1433/testbook
    </property>
    <!-- 數據庫JDBC驅動 -->
    <property name="hibernate.connection.driver_class">
    net.sourceforge.jtds.jdbc.Driver
    </property>
    <!-- 數據庫用戶名 -->
    <property name="hibernate.connection.username">sa</property> <!-- 數據庫用戶密碼 -->
    <property name="hibernate.connection.password">zh1107</property>
    <!--dialect ,每個數據庫都有其對應的Dialet以匹配其平臺特性 -->
    <property name="dialect">
    net.sf.hibernate.dialect.SybaseDialect </property>
    <!-- 是否將運行期生成的SQL輸出到日志以供調試 --> <property name="hibernate.show_sql">True</property>
    <!-- 是否使用數據庫外連接 --> <property name="hibernate.use_outer_join">True</property>
    <!-- 事務管理類型,這里我們使用JDBC Transaction --> <property name="hibernate.transaction.factory_class"> net.sf.hibernate.transaction.JDBCTransactionFactory
    </property>
    <!--映射文件配置,注意配置文件名必須包含其相對于根的全路徑-->
    <mapping resource="HibernateSample/hibernate/Book.hbm.xml" /> </session-factory>
    </hibernate-configuration>

    還有把hibernate-2.1下lib得.jar包引到classpath里。

     Junit的測試,注意要junit包。HibernateTest.java

    /*
     * Created on 2005-3-20 dahe
     */
    package test;import java.util.List;
    import net.sf.hibernate.*;
    import junit.framework.*;
    import HibernateSample.hibernate.*;
    import net.sf.hibernate.cfg.*;
    public class HibernateTest extends TestCase {
     Session session = null;
     /**
      * JUnit中setUp方法在TestCase初始化的時候會自動調用 一般用于初始化公用資源 此例中,用于初始化Hibernate Session
      */
      protected void setUp() {
       try {
         /**
         * 采用hibernate.properties配置文件的初始化代碼: Configuration config = new
         * Configuration(); config.addClass(TUser.class);
         */
         // 采用hibernate.cfg.xml配置文件
         // 請注意初始化Configuration時的差異:
         // 1.Configuration的初始化方式
         // 2.xml文件中已經定義了Mapping文件,因此無需再Hard Coding導入
         // POJO文件的定義
         Configuration config = new Configuration().configure();
         SessionFactory sessionFactory = config.buildSessionFactory();
         session = sessionFactory.openSession();
         } catch (HibernateException e) {
         e.printStackTrace();
         }
     }
     /**
      * * 與setUp方法相對應,JUnit TestCase執行完畢時,會自動調用tearDown方法 一般用于資源釋放 * 此例中,用于關閉在setUp方法中打開的Hibernate Session
      */
     protected void tearDown() {
      try { session.close();
      } catch (HibernateException e) {
        e.printStackTrace();
      }
     }
     /**
     * 對象持久化(Insert)測試方法
     *
     * JUnit中,以”test”作為前綴的方法為測試方法,將被JUnit自動添加 到測試計劃中運行
     */
     public void testInsert() {
      try {
         Book user = new Book();
         user.setBook("Emma");
         user.setSn("asdfd");
         Transaction tran=session.beginTransaction();
         session.save(user);
         tran.commit();
         } catch (HibernateException e) {
           e.printStackTrace();
           Assert.fail(e.getMessage());
         }
     }
     /**
     * 對象讀。⊿elect)測試 請保證運行之前數據庫中已經存在name=’Erica’的記錄
     */
     public void testSelect() {
      String hql = " from Book where book='Emma'";
      try {
         List userList = session.find(hql);
         Book user = (Book) userList.get(0);
         Assert.assertEquals(user.getBook(), "Emma");
         } catch (HibernateException e) {
           e.printStackTrace();
          Assert.fail(e.getMessage());
         }
       }
     }

    測試通過

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/

    TAG: hibernate junit 入門 middlegen


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>