DekGenius.com
[ Team LiB ] Previous Section Next Section

3.4 Transaction Management Paradigms

By this point, you should understand the role of transactions in database programming and the tools that Java provides through JDBC to enable you to manage transactions. The final step is to understand how they fit into the bigger picture, into the overall architecture of a transactional system.

There is no "one size fits all" paradigm for transactional systems. Different programming tasks require different design patterns to help you support your database transactions. The most common paradigms are:


Auto-commit transactions

This pattern is the simplest transaction management pattern. You simply let the database commit every statement you send by leaving the connection in auto-commit mode. Unfortunately, there are few real world problems for which you can use auto-commit mode.


JDBC transactions

This paradigm is the one you see in most JDBC texts. You turn off auto-commit and manage the transactions yourself. You are responsible for commits, rollbacks, and recovery in your Java code.


Stored procedure transactions

Using stored procedures, you can capture the complexity of any transaction and leave your Java code as simple as auto-commit mode programming. The stored procedure begins the transaction and contains commits and rollbacks. This approach would be the ideal if stored procedures did not require writing in some proprietary stored procedure language.


EJB transactions

In an EJB environment, you can have the EJB container manage your transactions for you. If you are unfamiliar with the term "container," we will cover that and other details of the J2EE platform in Chapter 9. For now, using EJB transactions means you do not have to have to do any transaction handling in your Java code. A third-party product manages the transactions for you.


Distributed transactions

Any one of the preceding transactions can also be a distributed transaction. A distributed transaction is one that spans multiple databases. You will generally be using distributed transactions in an EJB environment. Consequently, your Java code does not do any transaction management—distributed transactions are also managed by the container.

Throughout the rest of the book I will build on these transaction patterns and show different persistence metaphors that rely on these transaction management patterns.

    [ Team LiB ] Previous Section Next Section