Hi Clinton,
Thank you very much by your information, the environment is: application server: weblogic 8.1 transaction manager: JNDI WL8.1 EJB class with three DAO's, IBATIS (Framework DAO, PLSQLDAO, JDBCDAO) I thought that Ibatis had the same perfomance that native JDBC, butI believe that there is something bad in the source developed Here is the source test: ----------------------------------------------------------------- JDBC Native: ----------------------------------------------------------------- call.append("select * from book b, vlbk v "); call.append(" where b.prbk_seq_cdg = v.prbk_seq_cdg "); call.append(" and v.lnar_cdg_iata=?"); call.append(" and v.vlos_cdg=?"); call.append(" and v.vlos_fch=to_date(?,'dd/mm/yyyy') "); call.append(" and v.vlbk_origen=?" ); call.append(" and v.vlbk_destino =?" ); CallableStatement cstmt = conn.prepareCall(call.toString()); closer.add(cstmt); setParameter(cstmt, index++, flight.getIataCode()); // 1 setParameter(cstmt, index++, flight.getFlightNumber().longValue ()); // 2 setParameter(cstmt, index++, new SimpleDate(flight.getFlightDate ())); // 3 setParameter(cstmt, index++, flight.getFlightOrigin()); // 4 setParameter(cstmt, index++, flight.getFlightDestination()); // 5 ResultSet rs = cstmt.executeQuery(); // Ejecuta el PL. BookingDBO booking = null; closer.add(rs); for (boolean first = true; rs.next();) { ----------------------------------------------------------------- PL/SQL: ----------------------------------------------------------------- call.append("{ call cbkg_testing.getbookingbyflight (?,?,?,?,?,?)"); CallableStatement cstmt = conn.prepareCall(call.toString()); closer.add(cstmt); setParameter(cstmt, index++, flight.getIataCode()); // 1 setParameter(cstmt, index++, flight.getFlightNumber().longValue ()); // 2 setParameter(cstmt, index++, new SimpleDate(flight.getFlightDate ())); // 3 setParameter(cstmt, index++, flight.getFlightOrigin()); // 4 setParameter(cstmt, index++, flight.getFlightDestination()); // 5 cstmt.registerOutParameter(index, AbstractDAO.getCursorType()); cstmt.execute(); // Ejecuta el PL. // Obtiene cursor con los registros. BookingDBO booking = null; ResultSet rs = getResultSet(cstmt, index); PLSQL PROCEDURE getBookingByFlight( flightCode IN vlbk.lnar_cdg_iata%type, flightNumber IN vlbk.vlos_cdg%type, flightDate VARCHAR2, origin VARCHAR2, destination VARCHAR2, io_cursor OUT t_cursor ) IS -- Declara variables y cursores!... excErrorDatosIn EXCEPTION; BEGIN OPEN io_cursor FOR select * from book b, vlbk v where b.prbk_seq_cdg = v.prbk_seq_cdg and v.lnar_cdg_iata=flightCode and v.vlos_cdg=flightNumber and v.vlos_fch=to_date(flightDate,'dd/mm/yyyy') and v.vlbk_origen=origin and v.vlbk_destino =destination; ----------------------------------------------------------------- IBATIS with framework DAO: ----------------------------------------------------------------- SQL-MAP.xml <typeAlias alias="flight" type="com.lan.cargo.laboratorio.persistence.sqlembedded.dbo.FlightDBO"/> <typeAlias alias="booking" type="com.lan.cargo.laboratorio.persistence.sqlembedded.dbo.BookingDBO"/> <resultMap id="bookingResult" class="booking"> <result property="bookingCode" column="prbk_seq_cdg"/> <result property="companyCode" column="book_empr_cdg" /> <result property="airlineCode" column="lnar_cdg_iata" /> <result property="status" column="esbk_cdg_estd" /> <result property="bookingType" column="tpbk_cdg_booking" /> <result property="documentType" column="tdoc_cdg" /> <result property="user" column="book_usuario" /> <result property="userOffice" column="book_ofcn_usuario" /> <result property="documentOrigin" column="book_origen_doc" /> <result property="documentDestination" column="book_destino_doc" /> <result property="flightOrigin" column="book_origen_vuelo" /> <result property="flightDestination" column="book_destino_vuelo" /> <result property="creationDate" column="book_fecha_gen" /> <result property="flightDate" column="book_fecha_embarque" /> <result property="documentPrefix" column="book_pref_doc" /> <result property="documentNumber" column="book_num_doc" /> <result property="agentCode" column="book_clhl_cdg" /> <result property="agentBranchCode" column="book_clhl_scrs" /> <result property="agentContactName" column="book_contacto_agente" /> <result property="agentContactPhone" column="book_fono_contacto" /> <result property="shipperCode" column="book_cdg_shipper" /> <result property="shipperBranchCode" column="book_scrs_shipper" /> <result property="shipperName" column="book_nmb_shipper" /> <result property="consigneeCode" column="book_cdg_consignee" /> <result property="consigneeName" column="book_nmb_consignee" /> <result property="consigneeBranchCode" column="book_scrs_consignee" /> <result property="averageRate" column="book_tarifa" /> <result property="remarks" column="book_remarks" /> <result property="totalWeight" column="book_gross" /> <result property="chargeableWeight" column="book_chargeable" /> <result property="totalVolume" column="book_volumen_total" /> <result property="totalPieces" column="book_total_piezas" /> <result property="agentName" column="book_nmb_agente" /> <result property="agentAcronym" column="book_acronimo_agente" /> <result property="shipperAcronym" column="book_acronimo_shipper" /> <result property="consigneeAcronym" column="book_acronimo_consignee" /> <result property="contractId" column="cnto_id" /> <result property="contractRateType" column="book_contrato_allocation" /> </resultMap> <cacheModel id="flight-cache" type ="LRU" readOnly="false" serialize="false" > <flushInterval hours="24"/> <flushOnExecute statement="findBookingByFlight"/> </cacheModel> <!--***************************MAPPED STATEMENTS**************************************--> <select id="findBookingByFlight" resultMap="bookingResult" cacheModel="flight-cache" parameterClass="flight" > select * from book b, vlbk v where b.prbk_seq_cdg = v.prbk_seq_cdg and v.lnar_cdg_iata=#iataCode# and v.vlos_cdg=#flightNumber# and v.vlos_fch=#flightDate# and v.vlbk_origen=#flightOrigin# and v.vlbk_destino =#flightDestination# </select> ******************* sql-map-config.xml *********************************** <properties resource="sqlembedded/sql-map-config.properties" /> <settings cacheModelsEnabled="true" enhancementEnabled="true" lazyLoadingEnabled="true" useStatementNamespaces="false" maxRequests="512" maxSessions="128" maxTransactions="32" /> <transactionManager type="JDBC" > <!-- dataSource type="JNDI"> <property name="DataSource" value="bookingds"/> </dataSource --> <dataSource type="SIMPLE"> <property name="JDBC.Driver" value="${driver}"/> <property name="JDBC.ConnectionURL" value="${url}"/> <property name="JDBC.Username" value="${username}"/> <property name="JDBC.Password" value="${password}"/> </dataSource> </transactionManager > <sqlMap resource="sqlembedded/bookingcollections.xml" />