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();


