30 Stimmen

JPA-Java-Code-Generierung

Ich bin speziell auf der Suche nach einer JPA-Code-Generierungstechnik

Erstens, was sind alle Projekte, die JPA-kompatiblen Code erzeugen können? (z.B. HibernateTools)

Zweitens möchte ich auch das Dienstprogramm zur Codegenerierung anpassen, da es unseren Unternehmensstandards entsprechen muss.

Wenn nicht, was sind alle Rahmen zur Verfügung, um Java-Code mit Reflexion zu generieren? so kann ich von Grund auf zu schreiben.

Hinweis: Ich habe Eclipse verwendet, um JPA-Code zu generieren und ihn wiederholt zu überarbeiten, um ihn konform zu machen.

23voto

Kariem Punkte 3746

Ich habe auch Schwierigkeiten, die Frage zu verstehen, aber ich werde versuchen, sie umzuformulieren:

  • Sie haben eine Menge Daten in einer DB und möchten über JPA darauf zugreifen
  • Sie wollen die Klassen für den Zugriff auf die verschiedenen DBs/Tabellen nicht manuell schreiben
  • Derzeit werden alle bzw. die meisten Ihrer Modellklassen aus Eclipse heraus generiert
  • Diese Modelle haben JPA-Annotationen
  • Die Modellklassen (oder die Anmerkungen) entsprechen nicht den Unternehmensstandards

Wenn Sie von "JPA-Java-Code-Generierung" sprechen, verstehe ich darunter die Generierung von JPA-kommentierten Modellklassen aus einer bereitgestellten DB-Verbindung. Die meisten Frameworks bezeichnen dies oft als Reverse Engineering.

Jetzt haben Sie zwei Fragen:

  1. Welche Codegeneratoren können empfohlen werden, um JPA-kommentierte Klassen zu erzeugen?
  2. Ist es möglich, die Ausgabe dieser Frameworks anzupassen, und auf welche Weise?

Um auf die erste Frage zu antworten:

Die Netbeans-Codegenerierung gefällt mir sehr gut, vor allem wenn man die Ergebnisse jemandem zeigt, der mit JPA nicht vertraut ist.

Auf der Ebene der Anpassung kann ich nur die Erfahrungen teilen, die ich mit den Hibernate Tools gemacht habe. Insbesondere für reproduzierbare Ergebnisse sollten Sie versuchen, die Ameisenbasierte Aufgaben . Sie können einfach einige Ziele zu Ihrem Build hinzufügen und die Codegenerierung kann auf zwei Ebenen erfolgen:

Mit den Vorlagen sollten Sie in der Lage sein, die meisten Unternehmensstandards abzudecken. Schauen Sie sich die pojo Verzeichnis des Pakets hibernate-tools. Der einfachste Weg, die Codegenerierung anzupassen, besteht darin, die Vorlagen zu kopieren und anzupassen und sie in der Ant-Aufgabe, die zur Erstellung der Pojos verwendet wird, vor das hibernate-tools.jar zu setzen.

Wie bereits in einem anderen Kommentar angemerkt, könnte es schwierig sein, den generierten Code nachträglich zu ändern. Ich hoffe, die folgenden Tipps können Ihnen helfen:

  • Versuchen Sie, generierte und angepasste Quelldateien in verschiedenen Ordnern zu trennen.
  • Denken Sie über die Verwendung von [@MappedSuperclass](http://java.sun.com/javaee/5/docs/api/javax/persistence/MappedSuperclass.html) für Klassen, die Sie eventuell in einem manuellen Schritt anpassen möchten.

5voto

lgu Punkte 1957

Eine weitere effiziente Lösung für die JPA-Code-Generierung ist " Telosys-Werkzeuge "

Eine Eclipse-Plugin Arbeiten aus einer bestehenden Datenbank ("database firts" Ansatz ) mit anpassbare Vorlagen . Diese Lösung ist dank ihres leichtgewichtigen Modells und der Velocity-Vorlagen flexibler als Dali (auf GitHub freigegeben).

Siehe die Website : http://www.telosys.org/

Das Plugin auf dem Eclipse Marketplace : http://marketplace.eclipse.org/content/telosys-tools

Eine kurze Beschreibung des Prinzips : http://labs.sogeti.com/code-generation-can-it-be-simple-and-pragmatic/

Für JPA-Erstellung verwenden Sie die JPA-Vorlagen verfügbar auf GitHub : https://github.com/telosys-templates-v3

1 Stimmen

Die neue URL für Telosys Templates lautet : github.com/telosys-tools Das Bundle für JPA ist "persistence-jpa-TTversion".

0 Stimmen

Wird es versuchen, wenn es für mich funktioniert Da ich neu in JPA bin.

3voto

psuzzi Punkte 1909

Ich habe die Dali Persistenz Eclipse Plugin Das Tool kann über die Website der Kommission heruntergeladen werden. Indigo Java EE SR1 Update-Seite .

Nachdem das Plugin installiert ist, müssen Sie, um ein Reverse Engineering Ihrer DB durchzuführen, ein neues JPA-Projekt erstellen, die Datenbankverbindung festlegen, den automatischen Download der JPA-Laufzeitumgebung (in meinem Fall Eclipse Link) starten und dann den Generierungsprozess beginnen.

Während der Codegenerierung werden Sie aufgefordert, Details zu Tabellenzuordnungen und generierten Klassen anzugeben. Am Ende der Generierung ist der Code sauber.

2voto

xflorian Punkte 367

Miniprojekt ist ein Generator-Tool und kann JPA1/ JPA2 sowie Hibernate ORM-ähnliche Artefakte. Es basiert auf dem Reverse-Engineering der Datenbank. Sie können den Generator anweisen, Konventionen für Ihren Java-Code anzuwenden, die nicht Ihrer DB-Konvention entsprechen, aber das Mapping wird korrekt sein. (Beispiel: DB-Namenspräfix entfernen; Tabellen, die mit ADMIN_ beginnen, wie z.B. ADMIN_ENVIRONMENT sind Environment (ohne Admin) als Java-Klasse) Im Moment gibt es 20+ Kongresse die Ihnen helfen, Ihr Modell so umzugestalten, dass es weniger DB-Look-and-Feel und mehr Java-OO-freundlich ist.

Ein weiteres interessantes Merkmal ist aktualisierbarer Code die Möglichkeit, sowohl den generierten Code als auch Ihr Modell zu ändern UND aht die nächste Generation Ihre Änderungen werden beibehalten! Der Generator führt die Zusammenführung durch.

Die Vorlagen sind quelloffen und funktionieren mit Velocity. Es ist "ziemlich" einfach, einen Track hinzuzufügen, um einen spezifischen für Ihr Framework zu erstellen (z. B. Sicherheitsaspekte, die für Ihre Organisation relevant sind). Sie können Ihre Vorlage auf Feldebene, Entität (Tabelle oder Ansicht), Paket (Gruppe von Entitäten), Modell und Anwendung einschränken, was für Flexibilität sorgt, und da die Vorlagen eines Tracks einander über Metadaten kennen, ist es recht einfach, auf andere Vorlagen zu verweisen und sie durch Konfiguration mit Namenskonventionen zu verknüpfen.

1voto

snowflake Punkte 1752

Das Projekt lombok scheint es Ihnen zu ermöglichen, einfache benannte Abfragen zu generieren. Dies ist ein weiterer Ansatz, der Annotationen und Codegenerierung zur Kompilierzeit verwendet.

Siehe:

Ein Typ im Hibernate Forum scheint einen traditionellen Codegenerierungsansatz mit Hibernate Tools zu verwenden: https://forum.hibernate.org/viewtopic.php?f=9&t=962223&p=2315766&hilit=named+queries+generate#p2315766

Ich stimme cletus in dem Punkt zu, dass man nicht alle benannten Abfragen generieren kann, aber ich denke, wir können uns vorstellen, grundlegende benannte Abfragen wie Finder auf der Grundlage eines oder mehrerer Felder des Objekts zu generieren.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X