posts - 431,  comments - 344,  trackbacks - 0
          又是來自Spring這個神奇國度的東西, 你可以讓testCase繼承于AbstractTransactionalDataSourceSpringContextTests,就可以做到Open Session in Test ,解決Hibernate的lazy-load問題;而且接管原來的DAO里的事務控制定義,通過setDefaultRollback(boolean)方法控制最后回滾還是提交,如果默認為回滾,則測試產(chǎn)生數(shù)據(jù)變動不會影響數(shù)據(jù)庫內(nèi)數(shù)據(jù)。
           
          如果不能繼承于這個基類,可以自己簡單編寫,代碼是這樣的:
             protected PlatformTransactionManager transactionManager;
             protected TransactionStatus transactionStatus;
             protected boolean defaultRollback = true;
             public void setUp()
             {
                  transactionManager = (PlatformTransactionManager) ctx.getBean("transactionManager");
                  transactionStatus = transactionManager.getTransaction(new DefaultTransactionDefinition());
             }
             public void tearDown()
             {
                  if (defaultRollback)
                      transactionManager.rollback(this.transactionStatus);
                  else
                     transactionManager.commit(this.transactionStatus);
              }
          (注,hibernate太奸詐了,如果全部默認回滾,只會在session里干活,一點不寫數(shù)據(jù)庫,達不到完全的測試效果。)
          posted on 2007-05-15 11:09 周銳 閱讀(415) 評論(0)  編輯  收藏 所屬分類: HibernateSpring
          主站蜘蛛池模板: 会同县| 凤冈县| 尉犁县| 台州市| 新安县| 五台县| 万宁市| 治多县| 乐东| 博白县| 嘉义市| 涿鹿县| 湘潭市| 荔浦县| 万荣县| 彰化市| 邯郸市| 苗栗市| 改则县| 儋州市| 磐安县| 苏尼特右旗| 京山县| 普兰店市| 鸡西市| 施甸县| 安陆市| 和政县| 盐亭县| 茌平县| 石嘴山市| 临清市| 牟定县| 游戏| 德清县| 大新县| 彭山县| 永福县| 昭觉县| 陆良县| 揭阳市|