How does FireStorm/DAO™ support transactions?

Overview

FireStorm/DAO™ generated code can be used in auto-commit mode where each operation is a single transaction and can also be used in a transactional mode where the user controls when transactions begin and end.

Factory Methods

Taking a Customer DAO example, the factory class offers two methods for obtaining a DAO instance:

public class CustomerDaoFactory {
  public static CustomerDao create();
  public static CustomerDao create(Connection conn);
}

Transactional Code

By calling the create() method that takes a Connection parameter it is possible to have full control over transactions across multiple DAOs and multiple operations. For example:

// allocate a JDBC connection
Connection conn = ResourceManager.getConnection();
conn.setAutoCommit( false );

// obtain DAO instances for Customer and Order tables
CustomerDao customerDao = CustomerDaoFactory.create(conn);
OrderDao orderDao = OrderDaoFactory.create(conn);

// start a transaction
conn.begin();

// preform the DAO operations
customerDao.insert( customer );
orderDao.insert( order );

// commit the transaction
conn.commit();