Есть ли некоммерческая проверка запросов Hibernate? - PullRequest
1 голос
/ 15 декабря 2011

Мы используем Hibernate на своем рабочем месте в каком-то проекте, и мне недавно пришлось изменить некоторые запросы.Я обнаружил, что действительно сложно изменить запрос, запустить ant smart или ant refresh и посмотреть, работает ли мой запрос.Когда я спросил одного из моих коллег, он сказал, что мы используем его именно так.

У вас есть идеи, как я могу ускорить этот процесс?Я ищу инструмент, который может подключиться к базе данных (мы используем PGSQL) и выполнить там мой запрос Hibernate и показать результаты, не касаясь муравья.

Например, я мог бы попробовать это:

@Query(query = "SELECT DISTINCT l FROM Line l, IN(l.workplaces) w WHERE w.workshop.sid=:wsid", params = "wsid")

Ответы [ 2 ]

1 голос
/ 15 декабря 2011

JBoss Tools для eclipse имеет HQL-редактор, который вы можете открыть с точки зрения гибернации, вы можете тестировать hql-запросы там.

1 голос
/ 15 декабря 2011

У нас есть тест для перехода в спящий режим, который использует базу данных derby в качестве базы данных в памяти. Это создаст базу данных в дерби со всеми таблицами, и вы сможете выполнить запрос, чтобы убедиться, что он действителен.

У нас есть все запросы в orm.xml, поэтому эти запросы уже проверяются при создании EntityManager.

Настройка

  private static EntityManagerFactory emf;
  private static EntityManager em;

  @BeforeClass
  public static void before()
  {
    emf = Persistence.createEntityManagerFactory("persistenztest");
    em = emf.createEntityManager();
  }

тест

  @Test public void test()
  {
    Query q = em.createQuery(YOUR_QUERY_HERE);
    List<?> list =  q.getResultList();
  }

persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0"
  xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">

  <persistence-unit name="persistenztest" transaction-type="RESOURCE_LOCAL">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <mapping-file>orm.xml</mapping-file>
    <properties>
      <property name="hibernate.hbm2ddl.auto" value="create"/>
      <property name="hibernate.connection.driver_class" value="org.apache.derby.jdbc.EmbeddedDriver" />
      <property name="hibernate.connection.url" value="jdbc:derby:memory:sa;create=true;territory=de_DE;collation=TERRITORY_BASED:SECONDARY;"/>

      <property name="hibernate.cache.provider_class" value="org.hibernate.cache.HashtableCacheProvider"/>
      <property name="hibernate.cache.use_query_cache" value="false"/>
      <property name="hibernate.cglib.use_reflection_optimizer" value="false" />
    </properties>
  </persistence-unit>

</persistence>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...