<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    waterye

    #

    Hibernate Test Case

    習(xí)慣Spring + Hibernate帶來的方便, 但有時(shí)在應(yīng)用中測試Hibernate的新功能并不是很方便.
    實(shí)際上Hibernate的test代碼就有這個功能, 而且不用考慮create table等麻煩事.

    在自己的project中使用, 只需繼承org.hibernate.test.TestCase, 改變hand code的路徑, 設(shè)定hibernate.properties文件, 這樣就有了純Hibernate測試環(huán)境
    public abstract class HibernateTestCase extends TestCase
    {
        
    protected HibernateTestCase(String x)
        
    {
            super(x);
        }


        
    protected String getBaseForMappings() {
            
    return "com/waterye/test/";
        }


        
    /**
         * true時(shí), 使用auto schema export, hibernate.hbm2ddl.auto create-drop
         
    */

        
    protected boolean recreateSchema() {
            
    return false;
        }

    }


    說明:  以idea為例
    1. 將hibernate.properties放到test根目錄下
    2. pojo, hbm.xml, Test.java放到同一目錄下(參考hibernate的測試代碼)
    3. 在idea中run test method

    posted @ 2005-08-20 21:33 waterye 閱讀(1199) | 評論 (1)編輯 收藏

    Oracle高級查詢

    使用Oracle特有的查詢語法, 可以達(dá)到事半功倍的效果

    1. 樹查詢
    create table tree (
        id 
    number(10not null primary key,
        name 
    varchar2(100not null,
        super 
    number(10not null                // 0 is root
    );
    -- 從子到父
    select * from tree start with id = ? connect by id = prior super 
    -- 從父到子
    select * from tree start with id = ? connect by prior id = suepr
    -- 整棵樹
    select * from tree start with super = 0 connect by prior id = suepr

    2. 分頁查詢
    select * from ( 
        
    select my_table.*, rownum  my_rownum from ( 
            
    select name, birthday from employee order by birthday
        ) my_table 
    where rownum < 120 
    where my_rownum >= 100;

    3. 累加查詢, 以scott.emp為例
    select empno, ename, sal, sum(sal) over(order by empno) result from emp;
     
         EMPNO ENAME             SAL     RESULT
    ---------- ---------- ---------- ----------
          7369 SMITH             800        800
          
    7499 ALLEN            1600       2400
          
    7521 WARD             1250       3650
          
    7566 JONES            2975       6625
          
    7654 MARTIN           1250       7875
          
    7698 BLAKE            2850      10725
          
    7782 CLARK            2450      13175
          
    7788 SCOTT            3000      16175
          
    7839 KING             5000      21175
          
    7844 TURNER           1500      22675
          
    7876 ADAMS            1100      23775
          
    7900 JAMES             950      24725
          
    7902 FORD             3000      27725
          
    7934 MILLER           1300      29025

    4. 高級group by
    select decode(grouping(deptno),1,'all deptno',deptno) deptno,
           decode(
    grouping(job),1,'all job',job) job,
           
    sum(sal) sal
    from emp 
    group by ROLLUP(deptno,job);
    DEPTNO                                   JOB              SAL
    ---------------------------------------- --------- ----------
    10                                       CLERK           1300
    10                                       MANAGER         2450
    10                                       PRESIDENT       5000
    10                                       all job         8750
    20                                       CLERK           1900
    20                                       ANALYST         6000
    20                                       MANAGER         2975
    20                                       all job        10875
    30                                       CLERK            950
    30                                       MANAGER         2850
    30                                       SALESMAN        5600
    30                                       all job         9400
    all deptno                               all job        29025

    5. use hint
    當(dāng)多表連接很慢時(shí),用ORDERED提示試試,也許會快很多
    SELECT /*+ ORDERED */* 
      
    FROM a, b, c, d 
     
    WHERE  

    posted @ 2005-08-20 10:56 waterye 閱讀(4788) | 評論 (9)編輯 收藏

    高效使用dbunit

    dbunit: DbUnit is a JUnit extension (also usable with Ant) targeted for database-driven projects

    official site, 好久沒更新了, 最新版本2.1還是2004年5月的

    1. use ant task

    <taskdef classpathref="project.classpath" classname="org.dbunit.ant.DbUnitTask" name="dbunit" />

     導(dǎo)出數(shù)據(jù)

    <target name="export">
    <dbunit password="${database.password}" userid="${database.userid}" 
       url
    ="${database.url}" driver="${database.driver}" supportbatchstatement="true">
    <export format="xml" dest="data/export-data.xml">
          
    <query name="FOO" sql="SELECT COL1, COL2 FROM FOO WHERE COL1=4"/>
          
    <table name="BAR"/> 
    </export>
    </dbunit>
    </target>

    tip: 不指定query、table, 導(dǎo)出所有的table

    導(dǎo)入數(shù)據(jù)

    <target name="clean_insert">
    <dbunit password="${database.password}" userid="${database.userid}" 
       url
    ="${database.url}" driver="${database.driver}">
       
    <operation format="xml" src="data/init-data.xml" type="CLEAN_INSERT" />
    </dbunit>
    </target>

    tip:
    type: UPDATE, INSERT, DELETE, DELETE_ALL, REFRESH,
          MSSQL_INSERT, MSSQL_REFRESH, MSSQL_CLEAN_INSERT.

    比較數(shù)據(jù)

    <target name="compare">
    <dbunit password="${database.password}" userid="${database.userid}" 
       url
    ="${database.url}" driver="${database.driver}">
       
    <compare format="xml" src="data/init-data.xml" />
    </dbunit>
    </target>

    2. use code

    導(dǎo)出數(shù)據(jù)

    IDatabaseConnection conn = new DatabaseConnection(jdbcConnection, schema); // oracle指定schema
    IDataSet dataSet = conn.createDataSet();
    XmlDataSet.write(dataSet, 
    new FileOutputStream("export-data.xml")); // xml file
    FlatXmlDataSet.write(dataSet,new FileOutputStream("export-data.xml")); // flat xml file
    XlsDataSet.write(dataSet,new FileOutputStream("export-data.xls")); // xls file
    FlatDtdDataSet.write(dataSet,new FileOutputStream("export-data.dtd")); // dtd file
    CsvDataSetWriter.write(dataSet, new File("export-data-csv")); // csv file

    使用DatabaseSequenceFilter, 解決違反外鍵約束的問題

    IDatabaseConnection conn = new DatabaseConnection(jdbcConnection);
    ITableFilter filter 
    = new DatabaseSequenceFilter(conn);
    // ITableFilter filter = new DatabaseSequenceFilter(conn, tableNames);
    IDataSet dataset = new FilteredDataSet(filter, conn.createDataSet());
    XmlDataSet.write(dataset, 
    new FileOutputStream("export-data.xml"));

    導(dǎo)入數(shù)據(jù)

    DatabaseOperation.REFRESH.execute(conn, dataSet);
    DatabaseOperation.INSERT.execute(conn, dataSet);

    刪除數(shù)據(jù)

    DatabaseOperation.DELETE.execute(conn, dataSet);

    比較數(shù)據(jù)

    IDatabaseConnection conn = new DatabaseConnection(jdbcConnection);
    Compare compare 
    = new Compare();
    compare.setFormat(
    "xml");
    compare.setSrc(
    new File("export-data.xml"));
    compare.execute(conn);

    tip: 使用assert進(jìn)行比較, 作用不大
    code: Assertion.assertEquals(expectedTable, actualTable);

    3. QueryDataSet: use sql

    QueryDataSet queryDataSet = new QueryDataSet(conn);
    queryDataSet.addTable(
    "orders", ordersQuerySQL);

    posted @ 2005-08-20 03:17 waterye 閱讀(1670) | 評論 (0)編輯 收藏

    IDEA Plugins

    使intellij idea更加強(qiáng)大的plugins
    ?
    1. BackgroudImage
    在代碼編輯器顯示背景圖, 個人喜歡透明度為10%
    ?
    2. GenerateToString
    為Java Bean生成toString()
    ?
    3. UpperLowerCapitalize
    Alt-C (Capitalize), Alt-L (Lowercase), Alt-P (Uppercase)

    4. GroovyJ
    groovy plugin for idea
    ?
    5. Tomcat Integration

    6. CVS Integration

    7. JUnit Generator
    自動生成test code
    ?
    8.? sql query plugin
    新版本功能更強(qiáng)大, 個人主要用于從代碼中抽取出sql語句, 然后到pl/sql developer debug
    ?
    9. IdeaJad
    反編譯工具

    10. PropertiesEditor
    編輯屬性文件

    11. ShowEncodingPlugin

    posted @ 2005-08-19 21:09 waterye 閱讀(1437) | 評論 (5)編輯 收藏

    僅列出標(biāo)題
    共18頁: First 上一頁 10 11 12 13 14 15 16 17 18 
    主站蜘蛛池模板: 亚洲精品无码久久| 亚洲av成人一区二区三区在线观看| 亚洲中文字幕无码中文字在线 | 久久青青草原亚洲av无码app | 亚洲国产精品成人精品无码区在线 | 在线免费中文字幕| 国产亚洲av片在线观看16女人 | 亚洲黄色中文字幕| 69av免费视频| 精品亚洲国产成人| 免费无码A片一区二三区| 亚洲色大成WWW亚洲女子| 日韩一区二区三区免费体验| 国产精品亚洲lv粉色| 国产一区二区三区免费在线观看| 亚洲av成本人无码网站| 亚洲成a人无码av波多野按摩| sihu国产精品永久免费| 国产亚洲一区二区精品| 最近中文字幕免费mv在线视频| 亚洲自国产拍揄拍| 成人性生交大片免费看午夜a| 国产亚洲精品成人久久网站| 亚洲综合色自拍一区| 97精品免费视频| 亚洲妇女无套内射精| 亚洲人成无码www久久久| 国产成人精品无码免费看| 亚洲伊人久久大香线蕉在观| 国产精品久久免费视频| 视频免费在线观看| 国产精品亚洲专区在线观看| 亚洲A丁香五香天堂网| 免费av一区二区三区| 亚洲另类自拍丝袜第五页 | 国产成人免费网站在线观看| 久久久久久久国产免费看| 亚洲无线一二三四区| 亚洲?V无码成人精品区日韩 | 成年男女免费视频网站| eeuss影院ss奇兵免费com|