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:
- Welche Codegeneratoren können empfohlen werden, um JPA-kommentierte Klassen zu erzeugen?
- 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.