Wie kann ein BE-Model (ecore) mit Eclipse Modeling Framework (EMF) unter Eclipse Luna 4.4.2 und Texo generiert werden?

Erstellt am 8. Mai 2015 von It_berater

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:

<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.

Ähnliche Artikel:

  1. APT (Almost Plain Text) Editor Plugin für Eclipse Juno: Apache Doxia.
  2. Eclipse 3.7 da!
  3. Wie kann das Zest 2.0.0 Plugin (dot4zest) für Graphviz DOT unter Eclipse 4.4 Luna auf einem Mac OS X installiert werden?