La réponse correcte pour le traditionnel Printemps des architectures est de placer la sémantique transactionnelle sur les classes de service, pour les raisons que d'autres ont déjà décrit.
Une nouvelle tendance de Printemps de l'est vers domain-driven design. Spring Roo illustre la tendance bien. L'idée est de faire l'objet de domaine Pojo beaucoup plus riche que ce qu'ils sont typiques de Printemps architectures (habituellement, ils sont anémiques), et en particulier mettre de la transaction et de la persistance de la sémantique dans le domaine des objets eux-mêmes. Dans le cas où tout ce qui est nécessaire est simple les opérations CRUD, le web contrôleurs fonctionnent directement sur le domaine d'objets Pojo (qu'ils fonctionnent comme des entités dans ce contexte), et il n'y a pas de niveau de service. Dans les cas où il existe un type de coordination est nécessaire entre les objets du domaine, vous pouvez disposer d'un service de poignée de haricots qui, avec @la Transaction selon la tradition. Vous pouvez définir l'opération de propagation sur les objets du domaine à quelque chose comme NÉCESSAIRE, de sorte que les objets du domaine d'utilisation toutes les opérations existantes, telles que les transactions qui ont commencé au service de haricot.
Techniquement, cette technique utilise AspectJ et . Roo utilise AspectJ inter-les définitions de type de séparer l'entité sémantique (transactions et la persistance) de l'objet du domaine des trucs (en gros, les champs et les méthodes d'affaires).