Java Транзакции API и .NET System.Transactions - PullRequest
2 голосов
/ 14 апреля 2009

Я анализирую различные варианты поведения между JTA (API Java-транзакций) и аналогом .NET System.Transactions: подход между ними совершенно различен. Фактически, версия Транзакций на Java выглядит скорее как спецификация, оставляя разработчикам обязательство реализовывать либо Transactions, TransactionManager, либо другие определенные интерфейсы. .NET имеет более конкретную реализацию, которая не позволяет разработчикам определять свой собственный объект Transaction, но предоставляет интерфейсы для обработки ресурсов, управляемых в течение времени жизни транзакций (в то время как Java предоставляет некоторые интерфейсы XTA * для той же цели)

  • Мне интересно, имелся ли когда-нибудь шанс портировать Java-код, использующий JTA, на .NET, и какие основные различия он / она заметил.

  • Кроме того, кто-нибудь может объяснить мне поведение TransactionManager.setRollbackOnly против TransactionManager.rollback (в JTA)? Версия .NET имеет только метод Transaction.Rollback, который является более обязательным.

1 Ответ

1 голос
/ 04 мая 2009

rollback () отправляет фактическую команду отката базовым ресурсам. setRollbackOnly () помещает маркер в текущую транзакцию, которая читается, когда пришло время принять решение о коммите или откате. После вызова setRollbackOnly () единственным возможным результатом является откат, но вызов отката фактически не выполняется при вызове setRollbackOnly ().

Это идея обоих методов. Я не уверен в том, насколько разные реализации делают это различие, и даже если setRollbackOnly () будет выполнять откат при вызове, это не будет иметь практического значения.

...