Printemps @Transactional en lecture seule de propagation de l'

Je suis en train d'expérimenter en utilisant le modèle de commande pour permettre à mon calque web pour travailler avec les entités Hibernate dans le cadre d'une seule opération (évitant ainsi le chargement différé des exceptions). Cependant, je suis confus pour l'instant avec la façon dont je dois traiter les transactions.

Mes commandes d'appel de la couche de service méthodes annotées avec @Transactional annotations. Certains de ces couche de service méthodes sont en lecture seule, par exemple @Transactional(readOnly=true) - et certains sont en lecture/écriture.

Ma couche de service expose un gestionnaire de commande qui exécute les commandes passées sur le nom de la couche web.

@Transactional
public Command handle( Command cmd ) throws CommandException

Je suppose que je suis en droit de faire la commande du maître handle() méthode transactionnelle. C'est là que la confusion vient dans. Si la mise en œuvre d'une commande permet d'appeler plusieurs couche de service méthodes, il n'y a aucun moyen pour le gestionnaire de commande pour savoir si les opérations dites au sein de la commande sera en lecture seule, lecture/écriture, ou une combinaison des deux.

Je ne comprends pas comment la propagation des œuvres dans cet exemple. Si je devais faire la handle() méthode readOnly=true, puis ce qui se passe si la commande appelle ensuite une couche de service méthode annotée avec @Transactional(realOnly=false)?

J'apprécierais une meilleure compréhension de ce et vos commentaires sont les bienvenus...

Andrew

  • Alors laquelle des deux réponses contradictoires est vrai? Quelqu'un a pris la peine de vérifier?
  • Depuis handle() peut appeler des méthodes qui écrivent, l'opération doit permettre à l'écrit. Ce serait bien & bonne solution. Si vraiment vous vouliez, vous pourriez enquêter sur le démarrage de la TX par programmation & commutation en lecture seule, peut-être par le biais d'un attribut de Commande, mais je doute sérieusement que cela en vaut la peine.
InformationsquelleAutor DrewEaster | 2009-10-23