Как программно генерировать спящие классы POJO? - PullRequest
3 голосов
/ 05 апреля 2010

Привет, я знаю о плагине Hibernate Eclipse, который помогает нам (через серию экранов и нажатий кнопок) генерировать классы POJO и DAO для базовых таблиц. Но я хотел бы имитировать это в среде выполнения, то есть я хотел бы иметь возможность выполнять те же самые шаги программно, где я должен быть в состоянии предоставить файл .cfg.xml, файл reveng.xml, URL базы данных , папка назначения, через командную строку / параметры в main (String [] args) ..

Очевидно, что нет такого инструмента, который бы работал в чистом сценарии Hibernate. Есть один, который настроен на генерацию кода для Spring Framework - но это не для меня прямо сейчас.

Я попытался загрузить исходный код hibernate-tools.jar для плагина eclipse, но сейчас ссылка на скачивание кода src на hibernate.org (новый дизайн) по какой-то причине отключена.

Кто-нибудь обращался с такой вещью раньше? Или вы можете дать мне несколько подсказок, чтобы сделать это?

Я попробовал объект определенного класса JDBCReader, обоснование - прочитать все таблицы, используя методы JDBCReader, а затем выяснить, как использовать класс генератора hbm2POJO ....

Ответы [ 3 ]

3 голосов
/ 05 апреля 2010

Я хотел бы иметь возможность выполнять те же самые шаги программно, где я должен быть в состоянии предоставить файл .cfg.xml, файл reveng.xml, URL базы данных, папку назначения, через командную строку / параметры в main (String [] args)

Инструменты Hibernate для Eclipse и Ant могут использоваться как в Eclipse, так и в Ant, соответственно, через плагин Eclipse и через задачу Ant, и оба имеют общие базовые классы, которые вы можете использовать. повторно использовать «программно» (хотя я не уверен, что понимаю, что вы пытаетесь сделать).

Я попытался загрузить исходный код hibernate-tools.jar для плагина eclipse, но сейчас ссылка на скачивание кода src на hibernate.org (новый дизайн) по какой-то причине отключена.

Вы можете получить исходники Hibernate Tools из JBoss subversion репозиториев . Точнее, зацените следующий проект: http://anonsvn.jboss.org/repos/hibernate/trunk/HibernateExt/tools/. Занятия, которые вы ищете, находятся в org.hibernate.tool.hbm2x.*.

3 голосов
/ 05 апреля 2010

Похоже, для этого есть муравьиная задача . Вы можете вызвать эту задачу муравья программно, создав экземпляр org.hibernate.tool.ant.HibernateToolTask и вызвав метод execute(). Таким образом, вы можете сделать это во время компиляции или во время выполнения.

Но я бы посоветовал против этого. Вы не сказали использовать сценарий, но я не думаю, что есть много разумных сценариев для этого.

0 голосов
/ 11 июля 2015

Чтобы автоматизировать генерацию pojos, вы можете добавить плагин maven-antrun-plugin в файл pom.xml.

<build>
    ...
    <plugins>
       <plugin>
          <artifactId>maven-antrun-plugin</artifactId>
          <executions>
            <execution>
              <phase>generate-sources</phase>
              <configuration>
                <tasks>
                  <taskdef name="hibernatetool"
                           classname="org.hibernate.tool.ant.HibernateToolTask"
                           classpathref="maven.dependency.classpath"/>

                  <hbm2java output="src/generated">
                      <fileset dir="src/hibernate">
                          <include name="**/*.hbm.xml"/>
                      </fileset>
                  </hbm2java>
                </tasks>
              </configuration>
              <goals>
                <goal>run</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
     </plugins>
  </build>

Или вы можете генерировать классы pojo, используя прагматическую задачу Hibernate. Обратитесь к этому git project , чтобы сгенерировать pojos из hbm.

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