Le OpenSessionInViewFilter patron est efficace. Cela ouvre une session Hibernate & lie à votre fil, lors du traitement de chaque demande. OpenSessionInView s'étend également à la Session et loadability pour le rendu de l'Affichage & la couche de la Vue, ce qui diminue le couplage et de la complexité (en permettant que de "juste travail").
Mon philosophies n'ont pas vraiment d'accord avec aspect/ à base déclarative, la gestion des transactions. J'aime faire de grands changement d'état/ du cycle de vie des événements "explicite", puisqu'ils doivent être tout à fait précis-pas faiblement dépendants de multiples cachés et indirecte couches, qui peut ou peut ne pas fonctionner.
Il fournit un point à déboguer.
TX commit est une seule ligne de code, mais c'est le principal que vous voulez de point d'arrêt sur. N'est plus un point de vue syntaxique, que d'un "transactionnelle" déclaration; mais un enfer de beaucoup plus précis.
Franchement je trouve "commandes utilisateur" ou de "demandes", qui sont le lieu approprié pour procéder à une transaction et de contrôle transactionality de, doit être bien structuré, bien identifiés et assez explicite au sein de l'application.
(J'ai eu de la difficulté à obtenir l'aspect de la classe de chargement du travail, de l'essayer quand il est arrivé. Mon évaluation est que, par rapport à bien écrite OO code, l'aspect est limitée à une valeur.)
Astuce: en général je faire une classe helper, pour le rendre vraiment pratique pour se rendre à la Session et à valider la Transaction.
HbHelper ou somesuch.