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