# withTransaction

## Purpose

Allows programmatic transactions using Spring's Transaction Abstraction and a block.

## Examples

    Account.withTransaction { status ->
    	def source = Account.get(params.from)
    	def dest = Account.get(params.to)	def amount = params.amount.toInteger()
    	if(source.active) {
    		source.balance -= amount
    		if(dest.active) {
    			dest.amount += amount
    		}
    		else {
    			status.setRollbackOnly()
    		}
    	}
    }

## Description

The `withTransaction` method uses a block or closure that gets passed Spring TransactionStatus object. The `TransactionStatus` object can be used to programmatically control rollback of the transaction.

Refer to the user guide section of Programmatic Transactions for more information.