2 Stimmen

Ein etwas anderer GWT/GXT persistenter Ansatz

Ich bin ein Neuling bei GWT/GXT und ich suche nach der besten Persistenzmethode für meine zukünftigen Anwendungen. Ich habe viele Varianten in Betracht gezogen, also habe ich beschlossen, hier ein Diagramm zu zeichnen:

alt text
Meine Schlussfolgerungen lauten also:
1) JPA/Hibernate ist das beste Persistenz-Framework, aber es hasst die Zusammenarbeit mit GWT und insbesondere mit GXT
2) JDBC war nur ein Beispiel für einen Scherz :)
3) MyBatis ist wirklich großes Werkzeug für die Gewinnung von Daten aus db, seine schnell, effizient und hat große Möglichkeiten nicht in Hibernate gesehen, aber das Schreiben von Mappern ist die schlimmste Sache überhaupt.
4) Dozzer ist ein Server- und Benutzerressourcenkiller. Man muss eine Menge Code schreiben und es kopiert nur Daten (manchmal eine Menge). Verwenden Sie ihn auf keinen Fall!!! Stellen Sie sich einen Server vor, auf dem 100 Sitzungen laufen und jede Bean-Anfrage muss Dozzer verwenden.
5) DTO - ähnliche Situation. Es handelt sich um eine Standardvorlage, die lediglich einen Datentyp in einen anderen umwandelt. Es findet keine ernsthafte Datenverarbeitung statt. Verwenden Sie die Server-Ressourcen klug.
6) Gilead kopiert den Zustand der Bohnen im Ruhezustand. Es könnte gefährlich sein (nur aus wenigen Kommentaren gehört), schwer zu konfigurieren und mit anderen IoC-Frameworks (Guice in meinem Fall) zu integrieren.
7) Verwandeln Sie POJO nicht in BeanModel auf der Client-Seite. JavaScript ist sehr langsam und verlangsamt den gesamten Client.
8) Best Practice für mich und vielleicht auch für Sie: Finden Sie den kürzesten Weg im Graphen von der DB zur BaseModel-Bean auf der Client-Seite.
9) MyBatis erlaubt es, Abfrageergebnisse auf die BaseModel-Beans abzubilden (getestet), so dass sie nicht viele Male transformiert werden müssen und man sich nicht darum kümmern muss. Das Einzige, was man tun muss, ist, die richtigen Mappings zu schreiben.

Dies ist meine persönliche Meinung, aber ich würde gerne Ihre Meinung erfahren. Bitte erklären Sie mir, wenn ich falsch liege und nennen Sie Argumente. Ich würde gerne Hibernate verwenden oder vielleicht kennen Sie ein anderes ORM oder ein ähnliches Framework wie MyBatis, das mir ein direktes Mapping auf das BeanModel ermöglichen würde.

Für meinen Zweck werde ich eine Anwendung entwickeln, die für mich Domänenklassen im BaseModel-Stil mit Mappern, Validatoren, Editoren, erweiterten Suchfeldern, DAOs, Diensten und GWT-RPC-Klassen generieren würde. Die beste Lösung wäre, ein eigenes Gerüst zu entwickeln :D. Was denken Sie darüber?

1voto

zawoad Punkte 136

Du entwickelst dein eigenes Gerüst, so habe ich es gemacht. Hier ist mein Fluss DB-> JPA -> Entity Beans -> Meine eigene Konverterklasse -> BaseModel

In meiner Anwendung dient das BaseModel als DTO. Im GWT RPC Service konvertiere ich das BaseModel in Entity Bean und Entity Bean in BaseModel nach Bedarf.

- Zawoad

0voto

stan229 Punkte 2562

Werfen Sie vielleicht einen Blick auf GWT RequestFactory. Es ist eine neue Funktion in 2.1

http://code.google.com/webtoolkit/doc/latest/DevGuideRequestFactory.html

Ich persönlich verwende Gilead und habe damit keine Probleme gehabt, es ist keine größere Konfiguration erforderlich. Ich lade meine Sammlungen nicht oft nach. Ich habe gerade meine Anwendungsfälle mit diesem Gedanken im Hinterkopf entworfen.

0voto

SaSConsul Punkte 288

Hat jemand versucht, die Dynamic Models von Hibernate zu verwenden? Es sieht so aus, als ob man direkt auf das GXT BaseModel abbilden können sollte. Siehe: Abschnitt Dymanische Modelle im Winterschlaf

0voto

Quang Chung Punkte 1

Ich habe MyBatis mit GWT verwendet und war zufrieden, weil MyBatis nur POJOs verwendet, so dass Objekte einfach zwischen Client und Server übertragen werden können (keine DAO, DTO mehr). Sie können die Annotation von MyBatis verwenden, wenn Sie nicht gerne XML-Mapper schreiben, ich mag es einfach. Meine Empfehlung ist also MyBatis

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