The Spring framework like any other framework offering aspect oriented programming and inversion of control, let you externalize the transaction handling. Inside your code you will just have an annotation.
@Transactional public void hello(){ ... }
This is not a special feature of Spring framework. Lighter and easier to learn frameworks like Google Guice or the Nano Container (http://nanocontainer.codehaus.org/) offer the same functionality considering transaction handling. You can find an example for Spring integrating in chapter Hibernate and Spring the section called “Hibernate and Spring”.