Otwórz sesję w widoku wzorca

Zadaję to pytanie biorąc pod uwagę wybrane przeze mnie ramy rozwoju JPA (implementacja Hibernate), Spring i <wstaw MVC framework - Struts 1, Struts 2, Spring MVC, Stripes ...>.

Myślałem trochę o relacjach w mojej warstwie encji - na przykład mam jednostkę zamówienia, która ma wiele linii zamówień. Skonfigurowałem aplikację, aby chętnie ładowała linie zamówień dla każdego zamówienia. Czy uważasz, że jest to leniwy sposób na obejście leniwych problemów z inicjalizacją, które natrafiłbym, gdybym ustawił strategię pobierania na false?

Widzę to w następujący sposób: podczas pobierania jednostek i ich powiązań:

Użyj wzorca Otwórz sesję w widoku, aby utworzyć sesję na każdym żądaniu i zatwierdzić transakcję przed zwróceniem odpowiedzi.

Zaimplementuj warstwę DTO (Data Transfer Object) w taki sposób, że każde wykonane przeze mnie zapytanie DAO zwraca poprawnie zainicjowany DTO dla moich celów. Naprawdę nie podoba mi się ta opcja, ponieważ w moim doświadczeniu odkryłem, że tworzy ona wiele standardowych kodów kopiowania i staje się bałagan w utrzymaniu.

Nie mapuj żadnych skojarzeń w JPA, aby każde wykonywane przeze mnie zapytanie zwracało tylko te, które mnie interesują - to prawdopodobnie wymagałoby ode mnie posiadania DTO i będzie to trudne do utrzymania i myślę, że pokonuje cel posiadania ORM na pierwszym miejscu.

Z entuzjazmem pobierz wszystkie (lub większość skojarzeń) - w powyższym przykładzie zawsze pobieraj wszystkie linie zamówień, gdy odzyskuję zamówienie.

Moje pytanie brzmi: kiedy iw jakich okolicznościach użyłbyś której z tych opcji? Czy zawsze trzymasz się jednego sposobu?

Chciałbym zapytać kolegę, ale myślę, że gdybym nawet wspomniał termin „Otwarta sesja w widoku”, zostałbym powitany pustymi spojrzeniami :( To, czego naprawdę tu szukam, to porady od doświadczonego lub doświadczonego programisty.

Dzięki chłopaki!

questionAnswers(6)

yourAnswerToTheQuestion