posts - 431,  comments - 344,  trackbacks - 0
          又是來自Spring這個神奇國度的東西, 你可以讓testCase繼承于AbstractTransactionalDataSourceSpringContextTests,就可以做到Open Session in Test ,解決Hibernate的lazy-load問題;而且接管原來的DAO里的事務控制定義,通過setDefaultRollback(boolean)方法控制最后回滾還是提交,如果默認為回滾,則測試產生數據變動不會影響數據庫內數據。
           
          如果不能繼承于這個基類,可以自己簡單編寫,代碼是這樣的:
             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里干活,一點不寫數據庫,達不到完全的測試效果。)
          posted on 2007-05-15 11:09 周銳 閱讀(415) 評論(0)  編輯  收藏 所屬分類: HibernateSpring
          主站蜘蛛池模板: 白山市| 高邮市| 兴国县| 重庆市| 尖扎县| 遵义市| 察雅县| 伊川县| 江源县| 普安县| 神木县| 望奎县| 依兰县| 泸西县| 静安区| 民县| 林甸县| 姚安县| 临朐县| 东丰县| 和硕县| 平利县| 罗田县| 和平区| 合阳县| 三明市| 怀来县| 鹤山市| 天长市| 靖远县| 桂东县| 紫云| 无棣县| 会理县| 灵丘县| 沂水县| 湘潭县| 翁源县| 马龙县| 体育| 尉犁县|