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

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

  • <strong id="5koa6"></strong>
  • 對DAO編寫單元測試[4]

    發表于:2010-04-26來源:作者:點擊數: 標簽:單元DAOdao編寫
    對DAO編寫 單元測試 [4] public abstract class TransactionCallback { public final Object execute() throws Exception { Transaction tx = HibernateUtil.getCurrentSession().beginTransaction(); try { Object r = doInTransaction(); tx.commit(); ret

      對DAO編寫單元測試[4]

      public abstract class TransactionCallback {

      public final Object execute() throws Exception {

      Transaction tx = HibernateUtil.getCurrentSession().beginTransaction();

      try {

      Object r = doInTransaction();

      tx.commit();

      return r;

      }

      catch(Exception e) {

      tx.rollback();

      throw e;

      }

      }

      // 模板方法:

      protected abstract Object doInTransaction() throws Exception;

      }

      其原理是使用JDK提供的動態代理。由于JDK的動態代理只能對接口代理,因此,要求DAO組件必須實現接口。如果只有具體的實現類,則只能考慮CGLIB之類的第三方庫,在此我們不作更多討論。

      下面我們需要編寫DatabaseFixture,負責啟動HSQLDB數據庫,并在@Before方法中初始化數據庫表。該DatabaseFixture可以在所有的DAO組件的單元測試類中復用:

      public class DatabaseFixture {

      private static Server server = null; // 持有HSQLDB的實例

      private static final String DATABASE_NAME = "javaeedev"; // 數據庫名稱

      private static final String SCHEMA_FILE = "schema.sql"; // 數據庫初始化腳本

      private static final List initSqls = new ArrayList();

      @BeforeClass // 啟動HSQLDB數據庫

      public static void startDatabase() throws Exception {

      if(server!=null)

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品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>