Oracle 9i.
JDBC Driver : orajdbc-9.2.0.jar
On 6/28/06, Richard Yee <
[EMAIL PROTECTED]> wrote:
Which database are you using?
-Richard
Debasish Dutta Roy wrote:
> My Environment
>
> Server: Tomcat 5
> JDK: 1.4.2
>
> Datasource
> ---------------
> Defined in Tomcat as a JNDI resource. Mentioned in web.xml as a
> resource ref.
>
> Application design
> -------------------------
> Web layer : Struts action classes
>
> Middle layer: Normal business delegate classes. Action classes does
>
> CustomerDelegate delegate = new CustomerDelegate();
> long empId = delegate.addCustomer(customerVO);
>
> Inside the delegate class method there are multiple inserts into the
> database.
>
> Typical delegate add method:
>
> try {
>
> CustomerDAO customerDAO =
> this.daoManager.getDao(CustomerDAO.class );
> this.daoManager.startTransaction ();
> long customerId = customerDAO.addCustomerSummary(argParam);
> //first insert
> long lineItemId = customerDAO.addCustomerLineItem(argParam,
> customerId); //second insert
> this.daoManager.commitTransaction();
> } catch (MyException me) {
> logger.error();
> } finally {
> this.daoManager.endTransaction(); //suppose to commit if any
> of the above insert fails
> }
>
> DAO classes
>
> CustomerDAO is a plain interface containing only the method
> signatures.
>
> public interface CustomerDAO
>
> DAO Implementation
>
> There are several dao implementations of the CustomerDAO
> interface. SQLMap interface is one of them
>
> SQLMap implementation
>
> 1. SqlMapCustomerDAOImpl extends BaseSqlMapDAO implements CustomerDAO
> 2. There is not transaction management code in this class. It
> simply uses sqlMapClient to do the work.
>
> Typical code sample
>
> try {
> SqlMapClient mapClient =
> MySqlConfigurator.getSqlMapClientInstance();
> customerId =
> (Long)mapClient.insert("insertPrimaryCustomer", argCustomer);
> } catch (SQLException sqle) {
> logger.error("Failed to add", sqle);
> throw new DAOException(sqle.getMessage()); // this is not
> a iBATIS DaoException
> }
>
>
> BaseSqlMapDAO
>
> This extends SqlMapDaoTemplate
>
>
> MySqlConfigurator
>
> private static SqlMapClient sqlMap;
>
> static {
> try {
> String resource = "xml/sql- map-config.xml";
> Reader reader = Resources.getResourceAsReader(resource);
> sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
> } catch (Exception e) {
> e.printStackTrace ();
> }
> }
>
>
> iBATIS configuration
> ----------------
> 1. I have a dao.xml. Important configuration details are as follows:
>
> <context>
> <transactionManager type="SQLMAP">
> <property name="SqlMapConfigResource"
> value="xml/sql-map-config.xml"/>
> </transactionManager>
>
> <!-- DAO declarations -->
> <dao interface=" com.myproject.db.dao.CustomerDAO"
>
> implementation="com.myproject.db.dao.sqlmap.SqlMapCustomerDAOImpl "/>
> </context>
>
> There is only one context. All the DAOs are defined inside one context
> tag.
>
> 2. There is a sql-map-config.xml. Important configuration details are
> as follows:
>
> <sqlMapConfig>
> <properties resource="xml/SqlMapConfig.properties"/>
>
> <transactionManager type="JDBC" commitRequired="true">
> <property name="DefaultAutoCommit" value="false"/>
> <property name="SetAutoCommitAllowed" value="false"/>
> <dataSource type="JNDI">
> <property name="DataSource" value="${MyJndiDatasource}"/>
> </dataSource>
> </transactionManager>
>
> <sqlMap resource="xml/Customer.xml"/>
> <!-- And many others -->
>
> </sqlMapConfig>
>
>
> Problem: Now as mentioned above I have 2 inserts. And if the second
> one fails, the first one is not rolled back. I have tried all possible
> things. Just does not work.
>
