Właśnie rozpocząłem prosty testowy projekt Java, który zarządza niektórymi elementami wykorzystującymi Hibernate i zapewnia interfejs REST do manipulowania tymi obiektami i zapewnienia dodatkowej logiki biznesowej. Interfejs REST jest tworzony przy pomocy RESTEasy i Jetty.Utwórz sesję hibernacji na żądanie
Wszystko do tej pory działa dobrze, ale mam wrażenie, że piszę za dużo kodu standardowego. Ponieważ nie mam dużego doświadczenia w tych frameworkach Java, zastanawiam się, czy ktoś mógłby mi wskazać, jak poprawić sytuację.
- Creting Hibernate Sesje na żądanie
Cóż, o ile zrozumiałem, muszę utworzyć sesji hibernacji na żądanie i na koniec muszę je zamknąć. Tak więc obecnie wszystkie moje metody obsługi wyglądają tak:
Session session = HibernateUtil.getInstance().getSessionFactory().openSession();
...
...
...
session.close();
Czy istnieje sposób na usunięcie tych dwóch linii, aby w jakiś sposób zrobić to automatycznie? Obecnie moja usługa jest zarejestrowana jako singiel firmy RestEASY. Czy przejście na RESET RESSource i utworzenie sesji w konstruktorze rozwiąże problem? Myślę, że rozwiąże to problem tworzenia sesji. Ale gdzie go zamknąć?
W języku C++ można to łatwo zrobić, tworząc obiekt o zasięgu, który zamyka sesję na końcu. Ale w Javie?
- Zawsze, gdy takie żądanie REST zostanie wykonane, muszę sprawdzić poprawność sesji (użytkownik musi się wcześniej zalogować). Czy ServletFilter jest właściwą metodą?
Ogólne: Czy są jakieś inne wzorce lub schematy, które powinienem rozważyć? Chodzi mi o to, że chcę, aby było to tak proste, jak to tylko możliwe, a zwłaszcza, że nie mam tak dużego doświadczenia, że nie chcę skończyć używając Springa czy jakiejkolwiek ramy heavyweight. Wydaje mi się, że jestem przyzwyczajony do prostoty Pythona i Django, ale do tego małego projektu muszę używać Javy.
Do tej pory!
OK, ale gdzie mogę zamknąć sesję? – duselbaer
W przypadku struts2, możesz użyć przechwytywaczy do zainicjowania i zamknięcia obiektu sesji. –