2009-06-25 95 views
31

我正在尋找一種快速(非常快)的方式來測試對休眠查詢的更改。我有一個巨大的應用程序,其中包含數千個不同的HQL查詢(在XML文件中)和100多個映射類,我不想重新部署整個應用程序來測試查詢的一個小變化。如何測試HQL查詢?

一個好的安裝程序將如何讓我從重新部署中解放出來並啓用快速查詢檢查?

回答

14

隨着Intellij IDEA 8.1.3選擇的機制被稱爲'Facet'。要立即測試HQL查詢:

  1. 創建數據源工具 - >數據源,添加數據源,在確定的情況下驅動程序,用戶名和侑發展分貝
  2. 的密碼,你不已經一個hibernate.cfg或你可以用不同於xml的方式配置會話工廠:創建一個休眠。cfg文件引用所有XML映射(爲會話工廠定義一個名稱,只是爲了便於處理)
  3. 'Project Structure'將曲面添加到您選擇的模塊,並將最近定義的數據源分配到新曲面
  4. switch到Java EE查看
  5. 打開休眠刻面 - 節點
  6. 右鍵單擊會話工廠,並選擇「打開HQL控制檯」
  7. 進入控制檯 HQL查詢......和your're完成。

對於此RTFM問題感到抱歉。

10

您可以使用hibernate tools in eclipse運行查詢。這將允許您在嘗試某些操作時運行HQL。

如果您使用的是IntelliJ,則有 Hibero

太陽有standalone editor,但我沒有嘗試過。

+0

不存在對IntelliJ IDEA的8溶液(=插件,等等)? – Chris 2009-06-25 13:22:09

+0

我添加了一個鏈接到Hibero。 – stevedbrown 2009-06-25 14:00:20

+0

是的,thxn。如果它是如何描述它的話,那正是我需要的,但是:「自2008年1月1日起,由於商業原因,Hibero™已經停產。」那麼現在呢? – Chris 2009-06-25 14:20:17

3

我使用HSQLDB數據庫在單元測試中測試我的HQL查詢。只需創建一個實體管理器,將其轉換爲休眠會話並查詢。

final EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("tacs-test", props); 

    final EntityManager entityManager = entityManagerFactory.createEntityManager(); 

    return (Session)entityManager.getDelegate(); 

最佳 安德斯

3

你說的最快捷的方式,我不知道,如果你打算去得到最快捷的方式,或進行持續的測試,最快的方法,具有一定的初始投資獲得測試已實施。這個答案更多的是後者。

我之前完成此操作的方式是使用JUnitDBUnit執行一些簡單的集成測試。

本質上,您將使用DBUnit來設置具有已知和代表性數據集的測試數據庫,然後使用純JUnit來鍛鍊包含您的HQL查詢的方法,並驗證結果。

例如,

建立數據庫第一隻包含一個固定的一組數據例如,

Product Name, Price 
Acme 100 Series Dynamite, $100 
Acme 200 Series Dynamite, $120 
Acme Rocket, $500 

這是東西,你會在你的JUnit測試用例的設置()方法做。

現在讓我們假設你有這個實體的DAO,並且有一個「findProductWithPriceGreaterThan(int)」方法。在你的測試中,你會這樣做:

public void testFindProductWithPriceGreaterThanInt() { 
    ProductDAO dao = new HibernateProductDAO(); 
    //... initialize Hibernate, or perhaps do this in setup() 

    List products = dao.findProductWithPriceGreaterThan(110); 
    assertEquals(2, products.size()); 
    //... additional assertions to verify the content of the list. 
} 
2

在eclipse Market中,您可以搜索JBoss Tools並僅從給定列表中選擇Hibernate工具。