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.