Transactions (propriété d'atomicité) dans EJB 3 appliquent uniquement aux opérations de base de données - Ai-je raison?

StackOverflow https://stackoverflow.com/questions/3158861

Question

Je sais que les transactions pourraient être utilisées pour apporter atomicité.

Comme si methodOne() methodTwo() de methodThree() sont clubbed dans une transaction, le cas échéant du procédé échoue, l'opération est annulée. Un rollback se traduirait par un retour en arrière au niveau de la base de données et par conséquent la base de données serait portée à un état, tel qu'il était avant la transaction.

Mais si les méthodes ont apporté des modifications aux variables étatiques ou variables statiques-ou écrit à certains fichiers du système de fichiers? Je crois comprendre qu'un « rollback » ne demande pas de telles modifications non-base de données et que ces changements ne sont pas annulées. Est-ce ma bonne compréhension?

Était-ce utile?

La solution

  

Transactions (propriété atomicité) dans EJB 3 appliquer uniquement aux opérations de base de données - Ai-je raison

?

Non, vous n'êtes pas. Les transactions s'appliquent à ressources transactionnelles , la spécification Java EE reconnaissant trois types de ressources: transactionnels. Bases de données JDBC, des destinations JMS, et "autres services transactionnels accessibles via JCA"

  

Mais si les méthodes ont apporté des modifications aux variables étatiques ou variables statiques-ou écrit à certains fichiers dans le système de fichiers?

sont ceux des ressources non transactionnelles (sauf si vous êtes d'écriture au système de fichiers via un connecteur JCA pour la suite).

Autres conseils

ressources du système de fichiers ne sont pas des transactions. Donc, vous devez rouler vos modifications. Ou vous devez regarder les adaptateurs de ressources du système de fichiers fournis par conteneurs.

Les transactions dans ce contexte se réfèrent à des transactions de base de données. Si vous placez le code Java, les variables alter, ou produire la sortie de système de fichiers, vous ne l'utilisez pas bien. Vous devriez commencer une transaction et effectuer des opérations juste pour la base de données.

Bien que, si votre SGBD modifier votre système de fichiers (par une procédure Store, par exemple), vous devez vérifier la documentation que SGBD.

Alors, lisez votre code, si vous avez du code après la commande « DEBUT TRANSACTION », vous devez examiner.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top