Hibernate

Taskmanager

Voici la page de l'application TaskManager. Il s'agit simplement d'une application que j'ai crée dans le but de découvrir certains aspects du développement Web comme le framework Tapestry.

L'application peut être construite via Maven2. Elle va usage important des annotations Java5 ainsi que des generics. Au menu du Spring, de l'Hibernate, un peu d'AOP, etc...

Les sources peuvent être téléchargé via le lien suivant : http://anothergeekwebsite.com/files/task(..)

Maven2, XDoclet2, Hibernate, enfin!

Aprés avoir pas mal galéré pour faire générer mon mapping Hibernate depuis XDoclet2, lui même lancé via Maven2, j'ai enfin réussi à avoir une configuration qui me convient.

Pour avoir tout le bazar fonctionnel, il faut d'abord réussir à intégrer XDoclet2 et Maven2. Et vu le statut encore trés "développement" du plugin XDoclet2, ça n'a pas été évident de trouver la bonne configuration. Au final voilà ma configuration fonctionnelle :

<build>
    <plugins>
      <plugin>
        <groupId>xdoclet</groupId>
        <artifactId>maven2-xdoclet2-plugin</artifactId>
        <version>2.0.5-SNAPSHOT</version>
        <executions>
          <execution>
            <goals>
              <goal>xdoclet</goal>
            </goals>
          </execution>
        </executions>
        <dependencies>
          <dependency>
            <groupId>xdoclet-plugins</groupId>
            <artifactId>xdoclet-plugin-hibernate</artifactId>
            <version>1.0.4-SNAPSHOT</version>
          </dependency>
          <dependency>
            <groupId>xdoclet-plugins</groupId>
            <artifactId>xdoclet-plugin-hibernate</artifactId>
            <version>1.0.4-SNAPSHOT</version>
          </dependency>
        </dependencies>
        <configuration>
          <configs>
            <config>
              <plugin>org.xdoclet.plugin.hibernate.HibernateMappingPlugin</plugin>
              <params>
                <version>3.0</version>
                <destdir>${basedir}/target/classes/</destdir>
              </params>
            </config>
            <config>
              <plugin>org.xdoclet.plugin.hibernate.HibernateConfigPlugin</plugin>
              <params>
                <dialect>org.hibernate.dialect.HSQLDialect</dialect>
                <jdbcdriver>org.hsqldb.jdbcDriver</jdbcdriver>
                <jdbcurl>jdbc:hsqldb:mem:taskmanager</jdbcurl>
                <jdbcusername>sa</jdbcusername>
                <jdbcpassword></jdbcpassword>
                <hbm2ddlauto>create</hbm2ddlauto>
                <showsql>true</showsql>
                <version>3.0</version>
              </params>
            </config>
          </configs>
        </configuration>
      </plugin>
    </plugins>
  </build>
  <pluginRepositories>
    <pluginRepository>
      <releases />
      <snapshots />
      <id>codehaus-plugins-legacy</id>
      <url>http://dist.codehaus.org/</url>
      <layout>legacy</layout>
    </pluginRepository>
    <pluginRepository>
      <releases />
      <snapshots />
      <id>codehaus-plugins</id>
      <url>http://dist.codehaus.org/</url>
    </pluginRepository>
  </pluginRepositories>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
    </dependency>
    <dependency>
      <groupId>hibernate</groupId>
      <artifactId>hibernate</artifactId>
      <version>3.0.5</version>
    </dependency>

Il est important de remarquer plusieurs choses :

  • On utilise la version 1.0.4-SNAPSHOT du plugin
  • On est dans l'obligation d'ajouter 2 dépôts supplémentaires donc l'un doit être au format legacy (ceci parce que le dépôt des plugins xdoclet n'a pas encore migrer vers Maven2)

Cependant chez moi la génération de la configuration Hibernate était d'une lenteur incroyable - dans les 40s. Bien que je n'explique pas trop le pourquoi, je suis donc partie à la recherche d'une solution plus viable. Et Spring est venu à moi.

En effet, étant donnée que la configuration Hibernate en elle même risque peu de changer, je l'ai directement inséré dans mon applicationContext-hibernate.xml. Le plugin XDoclet2 pour Maven2 s'occupant dorénavant que de la génération des fichiers mappings (*.hbm.xml), l'ensemble est plus rapide.