我正在寻找一种快速(非常快)的方式来测试对休眠查询的更改。我有一个巨大的应用程序,其中包含数千个不同的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