Basic Spring Transactions

Posted Oct 27, 2009 by davistechyinfo / comments 0 comments / Print / Font Size Decrease font size Increase font size

Spring offers a few options when it comes to transaction management. I used the Programmatic Transaction option this was the easiest to implement in the architecture that I was working with. Here are the steps that I used.

Transaction support is available in J2EE as part of the EJB component architecture. For a simple application that is not going to be distributed among many servers the transaction support that is available in Spring is more than efficient.

Spring offers a few options when it comes to transaction management. The most commonly used option is Declarative Transactions because it has the least impact on application code. However, I used the Programmatic Transaction option this was the easiest to implement in the architecture that I was working with. Many who are trying to integrate Spring with legacy code may find this the most feasible option as well. Here are the steps that I used.

First I modified the jboss-spring.xml file to include a bean reference to the JTA Transaction Manager.

jboss-spring.xml

Then in the classes that I wanted to use transactions I added a reference to the bean as a property in the jboss-spring.xml file.


I then needed to add some imports to the actual Java class that would contain the transactional references. The additional functions that I needed to add related to Spring transactions are highlighted in bold.

BookMgmtHandler.java

import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.support.DefaultTransactionDefinition;


public class BookMgmtHandler {
BookDAO BookDAO = null;
BookDataAggregator BookDataAggregator = null;
private PlatformTransactionManager transactionManager = null;


private TransactionDefinition getDefinition() {
DefaultTransactionDefinition def = new    DefaultTransactionDefinition(TransactionDefinition.PROPAGATION_REQUIRED);
return def;}


public Book saveBook(Book book) throws BOOKException {
Book retBook = null;
TransactionStatus status = transactionManager.getTransaction(getDefinition());
// put a block for catching exceptions to rollback the transaction
try {
BookDAO.updateBook(book);
retBook = BookDataAggregator.getBook(book.getBookID());}
catch (BOOKException be){
transactionManager.rollback(status);throw be;}
transactionManager.commit(status);
return retBook;}


public void setTransactionManager(PlatformTransactionManager platformTransactionManager) {this.transactionManager = platformTransactionManager;} 
}

And that's it!

Rate this Article:

Be the first to rate me.

  • Nothing Found!

    Why not submit your own content? Signup here.

  • Nothing Found!

    Why not submit your own content? Signup here.


* You must be logged in order to leave comments, please login or join us.

Comments

No comments yet.



Bookmark and Share
Sign up for our email newsletter
Name:
Email: