Für die meisten Java Projekte braucht man ein BE-Model, das am besten automatisch generiert wird. Wie kann das innerhalb von Eclipse Luna mit dem EMF durchgeführt werden?
Wir wollen diese Modell Stuktur erzeugen. Eine Mindmap hat 0-* Zweige:
Zuerst Texo und EMF installieren.
Dann ein neues EMF Projekt anlegen über das Menü: File - New - Other:

Nun erstellen wir ein ecore Model über das Menü: File - New - Other - Eclipse Modeling Framework-Ecore Model:
So sieht das Projekt nun aus, mit der mindmap.ecore Model Datei:

Nun erzeugen wir zwei Klassen mit ein paar Attribute über New Child - New EClass über das Kontextmenü des Models (2.Zeile):
Dem Projekt muss noch die Texo nature hinzugefügt werden über Kontextmenü des Projektes und Configure - Add/Remove Texo nature:

Und schon kann das Model generiert werden über das Kontextmenü des Models: Texo - Generate JPA Annotated Model Code und Dao oder ein anderes gewünschtes Model:

Das Ergebnis sind diese Java Klassen:

Jetzt können wir auch noch ein EMF Generator Model über das Kontextmenü der selektierten mindmap.ecore generieren:

Jetzt wollen wir das Model kurz testen. Dazu erstellen wir ein weiteres Projekt vom Typ Maven. Wir ersetzen die pom.xml durch diese Datei:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 |
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>de.wenzlaff.mindmap</groupId> <artifactId>TWMindmapApp</artifactId> <version>0.0.1-SNAPSHOT</version> <name>TWMindmapApp</name> <dependencies> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>4.3.5.Final</version> </dependency> <!-- Hibernate 4 uses Jboss logging, but older versions slf4j for logging --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> <version>1.7.5</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.0.5</version> </dependency> <!-- Runtime zu den generierten Klassen im src-gen --> <dependency> <groupId>org.eclipse.emf</groupId> <artifactId>org.eclipse.emf.texo</artifactId> <version>0.9.0-v201501182340</version> </dependency> <dependency> <groupId>org.eclipse.emf</groupId> <artifactId>org.eclipse.emf.texo.json</artifactId> <version>0.9.0-v201501182340</version> </dependency> <dependency> <groupId>org.eclipse.emf</groupId> <artifactId>org.eclipse.emf.texo.xml</artifactId> <version>0.9.0-v201501182340</version> </dependency> <dependency> <groupId>org.eclipse.emf</groupId> <artifactId>org.eclipse.emf.texo.datagenerator</artifactId> <version>0.9.0-v201501182340</version> </dependency> <dependency> <groupId>org.eclipse.emf</groupId> <artifactId>org.eclipse.emf.texo.server</artifactId> <version>0.9.0-v201501182340</version> </dependency> <dependency> <groupId>org.eclipse.emf.ecore</groupId> <artifactId>sdo</artifactId> <version>2.3.0-v200706262000</version> </dependency> </dependencies> <build> <finalName>${project.artifactId}</finalName> <sourceDirectory>.</sourceDirectory> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <includes> <include>src/main/java/**/*.java</include> <include>src-gen/**/*.java</include> </includes> </configuration> </plugin> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>hibernate3-maven-plugin</artifactId> <version>3.0</version> <configuration> <components> <component> <name>hbm2ddl</name> <implementation>jpaconfiguration</implementation> </component> </components> <hibernatetool> <classpath> <path location="${project.basedir}/src/main/java" /> <path location="${project.basedir}/src-gen" /> <path location="${project.build.directory}/classes" /> <path location="${project.basedir}/src/main/resources/META-INF/" /> </classpath> <jpaconfiguration persistenceunit="Configuration" /> <hbm2ddl create="true" export="false" drop="true" outputfilename="configuration.sql" format="true" console="true" /> </hibernatetool> </configuration> <dependencies> <dependency> <groupId>org.hibernate.javax.persistence</groupId> <artifactId>hibernate-jpa-2.0-api</artifactId> <version>1.0.0.Final</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> <version>3.6.7.Final</version> </dependency> </dependencies> </plugin> </plugins> </build> </project> |
Und stellen in den Properties für das TWMindmapGen in den Texo Einstellungen diese Pfade ein, damit in das neue Projekt automatisch generiert wird:
Auch muss das src-gen Verzeichnis dem Classpath hinzugefügt werden. So sieht nun das Testprogramm Start.java und der Workspace aus:

Was haben wir bisher erreicht?
Wir haben ein grafisches Model Projekt, das nach jeder Änderung am Model automatisch in das Anwendungs Maven Projekt das Java BE-Model aktualisiert.
Wir haben ein Projekt vorbereitet, das mit Hibernate (JPA) das BE persistieren könnte.
Wie kann nun noch ein Annotationen Model erzeugt werden und das BE in die Datenbank (MySql) persistiert werden?
Fortsetzung folgt …
Weitere URLs zum Thema EclipseEMF (engl.) und Texo und JPA Annotationen.




