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

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

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

    waterye

    #

    Hibernate Test Case

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

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


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


        
    /**
         * true時, 使用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 閱讀(1197) | 評論 (1)編輯 收藏

    Oracle高級查詢

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

    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
    當多表連接很慢時,用ORDERED提示試試,也許會快很多
    SELECT /*+ ORDERED */* 
      
    FROM a, b, c, d 
     
    WHERE  

    posted @ 2005-08-20 10:56 waterye 閱讀(4786) | 評論 (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" />

     導出數據

    <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, 導出所有的table

    導入數據

    <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.

    比較數據

    <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

    導出數據

    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"));

    導入數據

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

    刪除數據

    DatabaseOperation.DELETE.execute(conn, dataSet);

    比較數據

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

    tip: 使用assert進行比較, 作用不大
    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 閱讀(1665) | 評論 (0)編輯 收藏

    IDEA Plugins

    使intellij idea更加強大的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
    新版本功能更強大, 個人主要用于從代碼中抽取出sql語句, 然后到pl/sql developer debug
    ?
    9. IdeaJad
    反編譯工具

    10. PropertiesEditor
    編輯屬性文件

    11. ShowEncodingPlugin

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

    僅列出標題
    共18頁: First 上一頁 10 11 12 13 14 15 16 17 18 
    主站蜘蛛池模板: 国产成人免费ā片在线观看老同学| 丝瓜app免费下载网址进入ios | 亚洲欧洲综合在线| 亚洲AV无码无限在线观看不卡| 91av免费在线视频| 日本亚洲中午字幕乱码| 日本免费在线中文字幕| 免费视频中文字幕| 亚洲影院在线观看| free哆拍拍免费永久视频| 中文字幕亚洲综合久久男男| jlzzjlzz亚洲jzjzjz| 亚洲精品无码你懂的| 84pao国产成视频免费播放| 久久精品国产精品亚洲| 精品熟女少妇aⅴ免费久久 | 热99RE久久精品这里都是精品免费| 久久青青草原亚洲av无码| 中文日本免费高清| 91精品国产亚洲爽啪在线影院| 久草免费福利在线| 日产亚洲一区二区三区| 久久天天躁狠狠躁夜夜免费观看| 亚洲人成在线电影| 永久免费不卡在线观看黄网站| 亚洲日本va午夜中文字幕一区| 成人影片麻豆国产影片免费观看| 91亚洲va在线天线va天堂va国产 | 久久亚洲免费视频| 国产成人精品日本亚洲专一区| 国产免费爽爽视频免费可以看| 国产成人亚洲合集青青草原精品| 国产男女猛烈无遮档免费视频网站| 亚洲免费福利在线视频| 国产成人免费a在线资源| 日韩电影免费在线观看网站| 亚洲欧洲高清有无| 国产国拍亚洲精品福利 | 亚洲av无码片在线播放| a毛片免费观看完整| 亚洲精品高清无码视频|