2009-06-25 26 views
31

Estoy buscando una forma rápida (realmente rápida) de probar los cambios para hibernar las consultas. Tengo una gran aplicación con miles de consultas HQL diferentes (en archivos XML) y más de 100 clases asignadas y no quiero volver a implementar toda la aplicación para probar solo un pequeño cambio en una consulta.¿Cómo probar las consultas HQL?

¿Cómo sería una buena configuración para liberarme del redespliegue y permitir una consulta rápida?

Respuesta

14

Con IntelliJ IDEA 8.1.3 del MECHNISM de elección que se llama 'faceta'. Para probar al instante consultas HQL:

  1. crear una fuente de datos de Herramientas -> Fuente de Datos, Añadir origen de datos, definir conductor, nombre de usuario y la contraseña de db desarrollo yor
  2. en caso de que usted no tiene ya un hibernate.cfg o usted configura su fábrica de sesiones de una manera diferente a través de xml: crear un hibernación.cfg referencia a todos los de mapeo XML (definir un nombre para la fábrica de sesiones, sólo para un manejo más fácil)
  3. en 'Proyecto Estructura' añadir faceta a su módulo de elección y asignar la fuente de datos definido recientemente a la nueva faceta interruptor
  4. a Java EE Ver
  5. abiertas Hibernate facetas - nodo
  6. clic derecho fábrica de sesión y elegir la opción "Abrir HQL consola"
  7. Escribir consulta HQL en la consola ... y tu estás hecho.

disculpa por esta pregunta de RTFM.

+2

Más información sobre el soporte de HQL en IntelliJ está aquí: http://www.jetbrains.com/idea/features/java_hibernate.html –

+3

Si está utilizando netbeans, simplemente haga clic derecho en hibernate.cfg.xml, probablemente se encuentre en su paquete predeterminado, y seleccione 'Hacer consulta HQL' –

+0

Ayuda detallada sobre la última versión: http://www.jetbrains.com/idea/webhelp/hibernate.html – Vadzim

10

Puede usar hibernate tools in eclipse para ejecutar consultas. Esto le permitirá ejecutar HQL siempre que quiera probar algo.

Si está utilizando IntelliJ, hay Hibero.

Hay un standalone editor del sol, pero no lo he probado.

+0

¿existe una solución (= plug-in, lo que sea) para IntelliJ IDEA 8? – Chris

+0

Agregué un enlace a Hibero. – stevedbrown

+0

sí, thxn. si funciona como lo describen, es exactamente lo que necesito, pero: "Desde el 1 de enero de 2008 ... Hibero ™ ha sido descontinuado por motivos comerciales". ¿Y ahora qué? – Chris

3

Probé mis consultas HQL en pruebas unitarias con la base de datos HSQLDB. Simplemente cree un administrador de entidades, transfiéralo a una sesión de hibernación y realice una consulta.

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

    final EntityManager entityManager = entityManagerFactory.createEntityManager(); 

    return (Session)entityManager.getDelegate(); 

Mejor Anders

+0

Exactamente lo que necesitaba, thx – Snicolas

3

Dijiste la forma más rápida, no estoy seguro de si nos referimos la forma más rápida de ponerse en marcha, o de la forma más rápida para realizar pruebas en curso, con un poco de inversión inicial para obtener las pruebas implementadas. Esta respuesta es más lo último.

La forma en que he hecho esto antes era implementar algunas pruebas de integración simple con JUnit y DBUnit.

En esencia, usará DBUnit para configurar su base de datos de prueba con un conjunto de datos conocido y representativo, y luego JUnit simple para ejercitar los métodos que contienen sus consultas HQL, y verificará los resultados.

Por ejemplo,

Configurar el primera base de datos que contiene sólo un conjunto fijo de datos, por ejemplo,

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

Esto es algo que uno hace en la configuración de su test JUnit() método.

Supongamos ahora que tiene un DAO para esta entidad, y hay un método "findProductWithPriceGreaterThan (int)". En su prueba, usted haría algo como:

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. 
} 
+0

con quick/fast quise decir la prueba 'change-test-change-test' ... iteration. – Chris

+0

@Chris una vez que tiene una clase base para las pruebas de DBunit, puede escribir métodos de prueba en menos de un minuto y se ejecutan durante unos segundos. No tan rápido como un editor de consultas dedicado con un gran botón de "ejecutar", pero lo bueno de las pruebas DBUnit es que puedes guardarlas y usarlas como pruebas de regresión. Personalmente estoy usando Eclipse Hibernate Tools para try'n'error inicial y DBUnit una vez que funciona. –

2

En el mercado de eclipse, puede buscar herramientas de JBoss y elegir solo herramientas de Hibernate de la lista dada.

6

Escribí una herramienta simple para probar & vista previa HQL, esta es solo una clase de Java con método principal.

se puede encontrar el código aquí: https://github.com/maheskrishnan/HQLRunner

es la captura de pantalla aquí ...

enter image description here

1

en Eclipse

  1. Instalar herramientas de Hibernate (Jboss)
  2. interruptor hibernar perpectivamente
  3. Abrir/haga clic en la ventana de configuración de Hibernate
  4. Rt Haga clic en la ventana y Agregar configuración
  5. Rt Haga clic en la ventana, haga clic/editor de HQL abierta
  6. Tipo y ejecutar sus consultas HQL y obtener el resultado en la ventana de resultados de hibernación de consultas

Siga este enlace para obtener más información http://docs.jboss.org/tools/OLD/2.0.0.GA/hibernatetools/en/html/plugins.html