Sorry for the re-post of this topic. I am using the work account for this mailing list.
Anyway, I believe I have discovered a performance issue either with iBATIS itself or something internal to it. After a lot of testing I have narrowed it down to how the SQL is formatted. The current application I have is inserting 10,222 records into a table from a parsed CSV file. I am using Spring and the method is wrapped in a transaction with: @Transactional void persistGatewayMerchantChangedFile(File file) throws ParseException, IOException; This method is simple. It reads a line of the CSV file, parses it, populates an object, inserts the data into the table. What I have found is this: 1.) If formatted SQL is used (See: insertGatewayMerchantChangedItemFormattedSQL below) the performance is awful. (Roughly 3 minutes) 2.) If non-formatted SQL is used (See: insertGatewayMerchantChangedItemUnFormattedSQL below) the performance is great! (Roughly 33 seconds) The *only* change made to obtain these results is swapping items A & B within the code. A.) getSqlMapClientTemplate().insert("insertGatewayMerchantChangedItemUnFormatte dSQL", gatewayMerchantChangedItem); B.) getSqlMapClientTemplate().insert("insertGatewayMerchantChangedItemFormattedS QL", gatewayMerchantChangedItem); I would be very interested if anyone else is seeing this or would be willing to test what I have shown here and see if there is in fact a performance hit with formatted SQL statements opposed to non-formatted statements. I will gladly supply and required information i.e. log files, code etc to help out and see what the issue is. Thank you in advance! M. Goodell <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd"> <sqlMap> <resultMap id="gatewayMerchantChangedItemResultMap" class="com.pdc4u.GatewayMerchantChangedItem"> <result property="receivedDate" column="received_date"/> <result property="transactionDate" column="transaction_date"/> <result property="batchDate" column="batch_date"/> <result property="location" column="location"/> <result property="terminal" column="terminal"/> <result property="currentCheckStatus" column="current_check_status"/> <result property="currentFundingStatus" column="current_funding_status"/> <result property="authorizationNumber" column="authorization_number"/> <result property="routingNumber" column="routing_number"/> <result property="accountNumber" column="account_number"/> <result property="checkNumber" column="check_number"/> <result property="checkAmount" column="check_amount"/> <result property="depositDate" column="deposit_date"/> <result property="transactionID" column="transaction_id"/> <result property="checkWriter" column="check_writer"/> <result property="driversLicenseNumber" column="drivers_license_number"/> <result property="driversLicenseState" column="driver_license_state"/> <result property="merchant" column="merchant"/> <result property="customInfoOne" column="custom_info_one"/> <result property="customInfoTwo" column="custom_info_two"/> <result property="customInfoThree" column="custom_info_three"/> <result property="customInfoFour" column="custom_info_four"/> <result property="customInfoFive" column="custom_info_five"/> <result property="crossReferenceID" column="cross_reference_id"/> </resultMap> <insert id="insertGatewayMerchantChangedItemUnFormattedSQL" parameterClass="com.pdc4u.GatewayMerchantChangedItem"> INSERT INTO global_e_gmcr (received_date, transaction_date, batch_date, location, terminal, current_check_status, current_funding_status, authorization_number, routing_number, account_number, check_number, check_amount, deposit_date, transaction_id, check_writer, drivers_license_number, driver_license_state, merchant, custom_info_one, custom_info_two, custom_info_three, custom_info_four, custom_info_five, cross_reference_id) VALUES (#receivedDate#, #transactionDate#, #batchDate#, #location#, #terminal#, #currentCheckStatus#, #currentFundingStatus#, #authorizationNumber#, #routingNumber#, #accountNumber#, #checkNumber#, #checkAmount#, #depositDate#, #transactionID#, #checkWriter#, #driversLicenseNumber#, #driversLicenseState#, #merchant#, #customInfoOne#, #customInfoTwo#, #customInfoThree#, #customInfoFour#, #customInfoFive#, #crossReferenceID#); </insert> <insert id="insertGatewayMerchantChangedItemFormattedSQL" parameterClass="com.pdc4u.GatewayMerchantChangedItem"> INSERT INTO global_e_gmcr ( received_date, transaction_date, batch_date, location, terminal, current_check_status, current_funding_status, authorization_number, routing_number, account_number, check_number, check_amount, deposit_date, transaction_id, check_writer, drivers_license_number, driver_license_state, merchant, custom_info_one, custom_info_two, custom_info_three, custom_info_four, custom_info_five, cross_reference_id ) VALUES ( #receivedDate#, #transactionDate#, #batchDate#, #location#, #terminal#, #currentCheckStatus#, #currentFundingStatus#, #authorizationNumber#, #routingNumber#, #accountNumber#, #checkNumber#, #checkAmount#, #depositDate#, #transactionID#, #checkWriter#, #driversLicenseNumber#, #driversLicenseState#, #merchant#, #customInfoOne#, #customInfoTwo#, #customInfoThree#, #customInfoFour#, #customInfoFive#, #crossReferenceID#); </insert> </sqlMap>