我正在尋找一種快速(非常快)的方式來測試對休眠查詢的更改。我有一個巨大的應用程序,其中包含數千個不同的HQL查詢(在XML文件中)和100多個映射類,我不想重新部署整個應用程序來測試查詢的一個小變化。如何測試HQL查詢?
一個好的安裝程序將如何讓我從重新部署中解放出來並啓用快速查詢檢查?
我正在尋找一種快速(非常快)的方式來測試對休眠查詢的更改。我有一個巨大的應用程序,其中包含數千個不同的HQL查詢(在XML文件中)和100多個映射類,我不想重新部署整個應用程序來測試查詢的一個小變化。如何測試HQL查詢?
一個好的安裝程序將如何讓我從重新部署中解放出來並啓用快速查詢檢查?
隨着Intellij IDEA 8.1.3選擇的機制被稱爲'Facet'。要立即測試HQL查詢:
對於此RTFM問題感到抱歉。
您可以使用hibernate tools in eclipse運行查詢。這將允許您在嘗試某些操作時運行HQL。
如果您使用的是IntelliJ,則有
Hibero。
太陽有standalone editor,但我沒有嘗試過。
我使用HSQLDB數據庫在單元測試中測試我的HQL查詢。只需創建一個實體管理器,將其轉換爲休眠會話並查詢。
final EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("tacs-test", props);
final EntityManager entityManager = entityManagerFactory.createEntityManager();
return (Session)entityManager.getDelegate();
最佳 安德斯
你說的最快捷的方式,我不知道,如果你打算去得到最快捷的方式,或進行持續的測試,最快的方法,具有一定的初始投資獲得測試已實施。這個答案更多的是後者。
我之前完成此操作的方式是使用JUnit和DBUnit執行一些簡單的集成測試。
本質上,您將使用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.
}
在eclipse Market中,您可以搜索JBoss Tools並僅從給定列表中選擇Hibernate工具。
我寫了一個簡單的工具來測試&預覽HQL,這只是一個帶main方法的java類。
,你可以在這裏找到代碼:https://github.com/maheskrishnan/HQLRunner
這裏的屏幕截圖...
在Eclipse
請點擊此鏈接獲取更多信息http://docs.jboss.org/tools/OLD/2.0.0.GA/hibernatetools/en/html/plugins.html
不存在對IntelliJ IDEA的8溶液(=插件,等等)? – Chris 2009-06-25 13:22:09
我添加了一個鏈接到Hibero。 – stevedbrown 2009-06-25 14:00:20
是的,thxn。如果它是如何描述它的話,那正是我需要的,但是:「自2008年1月1日起,由於商業原因,Hibero™已經停產。」那麼現在呢? – Chris 2009-06-25 14:20:17