Frage

Ich habe eine Java \ Frühling \ Hibernate Anwendung - komplett mit Domain-Klassen, die POJOs sind grundsätzlich Hibernate

Es ist ein Stück Funktionalität, die ich denken kann, auch in Grails geschrieben werden.

Ich möchte die Domain-Klassen wieder zu verwenden, die ich in der Haupt-Java-Anwendung erstellt haben

Was ist der beste Weg, dies zu tun?

Wenn ich schreibe neue Domain-Klassen die Java-Klassen erstrecken? Das klingt kitschig Oder kann ich generieren 'Controller aus den Java-Domain-Klassen?

Was sind die Best Practices rund um Java Domain-Objekte in Grails \ Groovy Wiederverwendung Ich bin sicher, es muss andere sein, einige Stücke in Grails Schreiben \ groovy

Wenn Sie über ein Tutorial wissen, die über einen solchen Integrations- spricht, dass wäre genial !!!

PS: Ich bin ein ziemlich Neuling in Grails-groovy so kann das Offensichtliche fehlen. Dank !!!

War es hilfreich?

Lösung

Wollen Sie wirklich / müssen Grails verwenden, anstatt nur Groovy?

Grails ist wirklich nicht etwas, das Sie einen Teil zu einem bestehenden Web-App hinzufügen können. Die ganze „Konvention über Konfiguration“ -Ansatz bedeutet, dass Sie ziemlich viel von Grails' Regeln spielen, sonst hat es keinen Sinn es in Verwendung. Und eine dieser Regeln ist, dass Domain-Objekte Groovy Klassen sind, die von der Grails Laufzeit stark „enhanced“ werden.

Es könnte möglich sein, sie zu erweitern zu haben Java-Klassen bestehenden, aber ich würde nicht auf sie wetten - und alle Spring und Hibernate Teile Ihrer bestehenden App verworfen werden müssen, oder zumindest müssten Sie verbringen sehr viel Mühe, um sie in Grails arbeiten. Sie werden den Rahmen zu kämpfen, anstatt von ihnen profitieren.

IMO haben Sie zwei Möglichkeiten:

  • Rewrite Ihre App von Grund auf in Grails, während so viel von der vorhandenen Code wie möglich wiederzuverwenden.
  • Halten Sie Ihre App, wie es ist und neue Sachen in Groovy hinzufügen, ohne Grails zu verwenden.

Die letztere in Ihrer Situation wahrscheinlich besser ist. Grails sollte sehr schnell neue Web-Anwendungen erstellen, das ist, wo es scheint. Hinzufügen von Material zu einer bestehenden App ist einfach nicht, was es gemacht wurde.

EDIT: Bei der Klärung in den Kommentaren: Wenn Sie im Grunde eine Dateneingabe / Wartung Frontend für Daten, die von einer anderen App und haben die DB als einzigen Kommunikationskanal zwischen ihnen, die tatsächlich funktionieren könnten ganz gut mit Grails verwendet schreiben planen; es kann sicherlich eher ein bestehendes DB-Schema zu verwenden, so konfiguriert werden, als seine eigenen aus den Domain-Klassen zu schaffen (obwohl letztere ist weniger Arbeit).

Andere Tipps

nur zu wissen, wie gut Groovy und Grails excel mit bestehenden Java-Code zu integrieren, ich glaube, ich könnte ein bisschen optimistischer als Michael über Ihre Optionen.

Das erste, was ist, dass Sie bereits Spring und Hibernate verwenden, und da Ihre Domain Klassen bereits POJOs sind sie sein sollten leicht zu integrieren. Irgendwelche Frühling Bohnen haben Sie vielleicht können (in grails-app/conf/spring/resources.xml) in einer XML-Datei wie üblich angegeben werden mehr oder viel einfach mit der GORM-Mapping DSL zwicken die Realitäten der vorhandenen Datenbank-Schema zu passen. Beziehungen wären, wo es könnte schwierig werden. Zum Beispiel könnten Sie eine andere Lösung haben, wo GORM einen Tisch beitreten erwartet, obwohl es auch eine Möglichkeit, zu arbeiten, um Unterschiede wie dies auch sein mag. Ich würde vorschlagen, so viel wie möglich über GORM und seine Mapping-DSL und dann zu experimentieren mit ein paar Ihrer Klassen zu lernen, um zu sehen, ob dies ein gangbarer Weg ist.

  • Haben Grails Ihre vorhandenen POJOs verwenden und Zuordnungen direkt Hibernate.

    Ich habe das selbst nicht ausprobiert, aber nach Grails Hibernate Integration dies soll möglich zu sein: „Grails erlaubt Ihnen auch, Ihre Domain-Modell in Java oder wiederverwenden eine vorhandene do zu schreibenHauptmodell, das Hibernate zugeordnet wurde verwenden. Alles was Sie tun müssen, ist die notwendige ‚hibernate.cfg.xml‘ Datei und Mappings Dateien im ‚% PROJECT_HOME% / Grails-app / conf / Hibernate‘ Verzeichnis entspricht. Sie werden noch in der Lage sein, alle dynamischen persistent und Abfragemethoden in GORM erlaubt anrufen! "

    Googeln „gorm Vermächtnis“ wird eine Reihe von hilfreichen Diskussionen und Beispielen, zum Beispiel: diese Blog-Post von Glen Smith (Co-Autor der soon-to-be-released Grails in Aktion ), wo er eine Hibernate Mapping-Datei zeigt verwendet mit "Legacy DB from Hell" zu integrieren. Grails in Aktion hat ein Kapitel mit dem Titel „Advanced GORM Kungfu“, das eine detaillierte Diskussion über dieses Thema verspricht. Ich habe eine Pre-Release-PDF des Buchs, und während ich noch nicht zu diesem Kapitel bekommen, was ich bisher gelesen habe, ist sehr gut, und das Buch deckt viele Themen, die in anderen Grails Büchern nicht ausreichend diskutiert .

  • Leider kann ich nicht bieten eine persönliche Erfahrung auf dieser letzten Option, aber es klingt machbar (und recht vielversprechend). Unabhängig davon, welche Variante Sie sich entscheiden, lassen Sie uns wissen, wie es sich herausstellt!

    Dieser Beitrag stellt einige Vorschläge für die Verwendung von Grails für Verpackung vorhandene Java-Klassen in einem Web-Framework .

    Lizenziert unter: CC-BY-SA mit Zuschreibung
    Nicht verbunden mit StackOverflow
    scroll top