Java Транзакции API и.NET System.Transactions

Я анализирую различные варианты поведения между 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 ответ

Решение

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

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

Другие вопросы по тегам