Ogólna zasada, której przestrzegam, oznacza, że granice transakcji są zaznaczone w komponentach usługi, dlatego nie chcę modyfikować hibernacji POJO poza usługą, ponieważ nie wiem, czy jest już uruchomiona transakcja. Tak więc od komponentu bean nazwałbym przekazanie warstwy usługi w parametrach, które warstwa usługi musi zbudować pojo hibernacji i zapisanie go, zaktualizować, itd.
Innym sposobem na zrobienie tego byłoby twoja podkładka implementuje interfejs zdefiniowany przez warstwę usługi, a następnie przekazuje komponent bean backing do warstwy usługi. Na przykład.
public interface UserInfoRequest {
public String getName();
}
@Service
public class SomeSpringService {
@Transactional(.....)
public void registerNewUser(UserInfoRequest request)
{
}
}
public class SomeBackingBean implements UserInfoRequest {
private SomeService someSpringService;
public void someMethodBoundToSJF()
{
this.someSpringService.registerNewUser(this);
}
}
Jeśli chodzi o Twoje ostatnie pytanie nie jestem fanem JSF, myślę JSF jest fundamentalnie błędna, ponieważ jest to framework oparty komponent serwera. Tak więc mój argument przeciwko JSF jest ogólnym argumentem przeciwko strukturom opartym na komponentach po stronie serwera.
Podstawową wadą frameworka opartego na składnikach po stronie serwera jest to, że nie kontrolujesz tego, co komponent będzie wyprowadzał, co oznacza, że utknąłeś z wyglądem komponentu, jeśli chcesz czegoś, co wygląda inaczej, musisz napisać własną składnik lub musisz zmodyfikować istniejący komponent. Przeglądarki internetowe ewoluują bardzo szybko, dodając nowe funkcje, które mogą naprawdę poprawić jakość interfejsu użytkownika aplikacji, ale te funkcje musisz napisać bezpośrednio HTML, CSS i JavaScript, a komponenty po stronie serwera sprawiają, że jest to trudniejsze.
Architektury komponentów po stronie klienta są tutaj i znacznie lepsze niż wykonywanie komponentów po stronie serwera. Oto mój zalecany stos.
Client Architecture Side:
- jQuery.JS - Podstawowe libary aby wszystkie przeglądarka wyglądają tak samo do JavaScript
- backbone.js + underscore.js - Wysoki poziom składnika po stronie klienta architektura oparta
- handlebars.js - dla szablonów po stronie klienta
- Twitter Bootstrap - do dostać przyzwoity zestaw startowy CSS & widgety
napisać kod HTML, CSS i JavaScript zorganizowany poglądów szkieletowych, które mówią do bocznych serwer modeli wykorzystujących AJAX. Masz pełną kontrolę nad doświadczeniem użytkownika po stronie klienta z wystarczającą strukturą , aby naprawdę stworzyć ładny kod wielokrotnego użytku.
Server Side Architecture:
- Adnotacja Driven wiosny MVC, Usługi i Dao (@Controller, @Service, @Repository) skanowanie komponent
- Wiosna z autowiring wg grup rodzajowych (@Autowired, @Inject)
- AspectJ obciążenia czasu tkania lub kompilacji tkania
- hibernacji
- Tomcat 7
- JSP jako widok tech logia Spring MVC (tak to cluncuky ale wont być tworzenie zbyt wiele stron JSP, głównie dla usng <% @inculde> dyrektywa
Oprzyrządowanie: - Wiosna Narzędzie apartament - JRebel (tak, że don” t trzeba uruchomić i zatrzymać serwer) to naprawdę działa naprawdę warte swojej ceny - Tomcat 7