2012-06-15 105 views
0

我正在使用Hibernate將對象映射到包含通過註釋(如XML文件是如此2003)一些ginormous表的遺留架構。由於這些類是如此之大,所以偶爾會偶爾出現一個錯字,Hibernate在我嘗試運行它之前並不會告訴我這些錯誤。測試休眠映射

這是我已經試過:

一:設置hbm2ddl.auto爲「驗證」:

這會導致類的字符串值來驗證varchar(255)。由於數據庫中的許多列類型爲CHAR(n),因此會出現此類問題。我將不得不將添加到幾百個映射。

二:使用Unitils。

通過Maven導入這些導致依賴庫導入,導致代碼的其他部分崩潰。例如:我使用的是Hibernate 4.1,但是Unitils導入了Hibernate 3.2.5並且炸燬了一個UserType。

那麼,有沒有另一種方法來做到這一點?我查看了Unitils代碼,看看我是否可以簡單地抽出我需要的部分(當我只需要一種方法時,我常常使用apache-commons來完成),但這不是一項簡單的任務。

Hibernate通過Spring應用程序上下文進行配置。

有什麼想法嗎?

回答

1

我會使用Spring測試框架針對內存數據庫(HSQLDB,H2)編寫測試。當您嘗試針對表運行查詢時,您會很快看到任何映射錯誤。

測試類會是這個樣子:

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(classes=MyTestConfig.class) 
@TransactionConfiguration(transactionManager="txMgr", defaultRollback=true) 
public class MyTest { 

    @Autowired 
    private SessionFactory sessionFactory; 

    // class body... 
} 

我將配置Hibernate作爲測試的一部分自動部署表。

+0

很好的答案,但不是我所期待的。我想要的是一種測試所有映射的方法,無需編寫查詢。這看起來像我想要的不是那麼容易。 – Jason

+0

在我看來,測試映射的唯一方法是執行查詢。除非你寫了一個實用程序來檢查你的課堂上的註釋......這聽起來不太直截了當。 –