JPA-Metamodell-Generierung in Eclipse automatisch konfigurieren

Die Erzeugung des statischen Metamodells für JPA-Entities wird vom (normalen) Java-Compiler ab Java 6 automatisch erledigt, wenn ein entsprechender Metamodell-Generator im Classpath ist, z. B. hibernate-jpamodelgen. Ein Maven-Projekt braucht dazu nur die folgende Konfiguration:

<project …>
  …
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <inherited>true</inherited>
        <configuration>
          <generatedSourcesDirectory>
            target/generated-sources/annotations
          </generatedSourcesDirectory>

        </configuration>
      </plugin>
    </plugins>
  </build>

  <dependencies>
    <dependency>
      <groupId>javax</groupId>
      <artifactId>javaee-api</artifactId>
      <version>7.0</version>
    </dependency>

    <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-jpamodelgen</artifactId>
      <version>1.3.0.Final</version>
      <scope>provided</scope>
      <optional>true</optional>
      <exclusions>
        <exclusion>
          <groupId>org.hibernate.javax.persistence</groupId>
          <artifactId>hibernate-jpa-2.0-api</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
  </dependencies>
</project>

Statt der Dependency javax:javaee-api würde natürlich eine ausreichen, die nur JPA umfasst.

Mit dieser Projektkonfiguration wird zu einer Entity-Klassen Xyz in target/generated-sources/annotations eine Metamodellklasse namens Xyz_ erzeugt und kompiliert.

Um dieses Projekt auch in Eclipse bearbeiten zu können, muss vor dem Import des Projektes in der Workspace-Einstellung Maven -> Annotation Processing die Option Automatically configure JDT APT aktiviert werden. Diese Einstellung gehört zum Plugin m2e-apt, das seit einiger Zeit Bestandteil von Eclipse mit Maven-Integration ist, also bspw. im JBoss Developer Studio 7, aber auch bei Bedarf aus dem Marketplace nachinstalliert werden kann. Wird das Projekt dann als Maven-Projekt in Eclipse importiert, werden die Projekteigenschaften Java -> Compiler -> Annotation Processing und Java -> Compiler -> Annotation Processing -> Factory Path automatisch gefüllt, sodass auch bei der Bearbeitung durch Eclipse Metamodellklassen generiert werden.

Advertisements

Über Dirk Weil
Dirk Weil ist seit 1998 als Berater im Bereich Java tätig. Als Geschäftsführer der GEDOPLAN GmbH in Bielefeld ist er für die Konzeption und Realisierung von Informationssystemen auf Basis von Java EE verantwortlich. Seine langjährige Erfahrung in der Entwicklung anspruchsvoller Unternehmenslösungen machen ihn zu einem kompetenten Ansprechpartner und anerkannten Experten auf dem Gebiet Java EE. Er ist Autor in Fachmagazinen, hält Vorträge und leitet Seminare und Workshops aus einem eigenen Java-Curriculum.

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

%d Bloggern gefällt das: