Wiosna jest oczywistą, z której powinieneś korzystać. GWT ma swój własny szkielet kontrolera RPC, więc nie mogę naprawdę myśleć o tym, do czego potrzebujesz struktury aplikacji internetowych (np. JSF).
JPA to rozsądny wybór na wielu frontach, ale ma również problemy.
Po pierwsze, jest to potencjalnie problem z wysyłaniem obiektów JPA do klienta. GWT (do 1,5 co najmniej) wymusza dość surową strukturę katalogów, więc musisz umieścić swoje jednostki w drzewie źródłowym GWT. Poza tym, serializowanie (zwykle JSON) jednostek JPA do i od klienta jest potencjalnie problematyczne.
Jednostki JPA to dość sztywne obiekty, które odwzorowują prawie jeden do jednego w stosunku do twoich stołów. Nie jest to jednak sposób, w jaki korzystasz z danych w warstwie prezentacji. Bezpośredni SQL pozwala wybrać i wybrać dane, które robisz i nie chcesz, dostosowane specjalnie do tej strony. Zatem jednostki JPA zwykle mają wiele pól, które nie są zainteresowane i nie powinny być serializowane (w szczególności kolekcje relacji jeden-do-wielu).
Ten aspekt SQL - dostosowywanie go do strony - jest często wymieniany jako zaleta podmiotów: Twój kod nie kończy się zaśmieceniem obiektami wartości jednorazowych. Chodzi o to, że nadal kończy się to samo w gWT + JPA, ale zamiast znajdować się w warstwie trwałości lub w warstwie biznesowej, kończy się na nich warstwa prezentacji. Teraz możesz nazwać to zaletą. Nazywam to sześć jeden, pół tuzina innych.
Właściwie uważam, że Ibatis jest o wiele lepiej dopasowany do modelu aplikacji GWT niż JPA, ponieważ używasz bezpośredniego SQL, obiektów dostosowanych do Twojego celu i te obiekty mogą być używane w całości z bazy danych do klienta . Teraz ta koncepcja może przerazić fanatyków warstwowych, które są dość powszechne w Jawie, ale pamiętaj, że warstwowanie jest środkiem do celu, a nie celem samym w sobie. Użyj go, jeśli ci pomoże. Nie, jeśli tak nie jest.
Ale sprężyna jest absolutną koniecznością w tym stosie.
Odsyłam również do: Why isn’t Google Web Toolkit more popular? i Using an ORM or plain SQL?.
dlaczego jsf? czy przekazujesz JSON do przodu, czy też używasz bezpośrednich połączeń serwisowych? Tak czy inaczej, JSF nie jest potrzebny. – user37468
głównie do tworzenia i odpowiedniego zakresu zarządzanych komponentów bean na instancję/żądanie/instancję aplikacji – GBa