Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何提高Spring存储过程和属性bean行映射器的性能?_Java_Spring_Stored Procedures - Fatal编程技术网

Java 如何提高Spring存储过程和属性bean行映射器的性能?

Java 如何提高Spring存储过程和属性bean行映射器的性能?,java,spring,stored-procedures,Java,Spring,Stored Procedures,我已经扩展了org.springframework.jdbc.object.StoredProcedure来调用oracle过程,但我面临着严重的性能问题。请建议实现良好性能的最佳方法 我认为将游标输出映射到bean需要花费很多时间。 按程序返回的总记录-2469。 sql developer中的执行时间-1s java中的执行时间约为1.2分钟 public class TestingChart extends StoredProcedure{ public TestingChar

我已经扩展了org.springframework.jdbc.object.StoredProcedure来调用oracle过程,但我面临着严重的性能问题。请建议实现良好性能的最佳方法

我认为将游标输出映射到bean需要花费很多时间。 按程序返回的总记录-2469。 sql developer中的执行时间-1s java中的执行时间约为1.2分钟

public class TestingChart  extends StoredProcedure{

    public TestingChart(DataSource dataSource) {
        super(dataSource, DbSubseaConstants.PKG_TEST_FATCHART_PRC);
        declareParameter(new SqlParameter(DbSubseaConstants.MASTER_TEST_ID,OracleTypes.NUMBER));
        declareParameter(new SqlOutParameter(DbSubseaConstants.GET_REPORT_C2, OracleTypes.CURSOR,
                new BeanPropertyRowMapper<FATChart>(FATChart.class)));
        declareParameter(new SqlOutParameter(DbSubseaConstants.PO_ERROR_MESSAGE,java.sql.Types.VARCHAR));
        compile();
    }


    @Override
    public Map<String, Object> execute(Map<String, ?> inputs) {
        Map<String, Object> output = null;
        Map<String, Object> inputsParams = new HashMap<String, Object>();
        Long masterTestId =  (Long) inputs.get(DbSubseaConstants.MASTER_TEST_ID);
        inputsParams.put(DbSubseaConstants.MASTER_TEST_ID, masterTestId);
        output = super.execute(inputsParams);
        return output;
    }

}
公共类测试图表扩展了StoredProcess{
公共测试图表(数据源数据源){
super(数据源,DbSubseaConstants.PKG\U TEST\U FATCHART\U PRC);
declareParameter(新的SqlParameter(DbSubseaConstants.MASTER\u TEST\u ID,OracleTypes.NUMBER));
declareParameter(新的SqlOutParameter(DbSubseaConstants.GET_REPORT_C2、OracleTypes.CURSOR、,
新BeanPropertyRowMapper(FATChart.class));
declareParameter(新的SqlOutParameter(DbSubseaConstants.PO_ERROR_MESSAGE,java.sql.Types.VARCHAR));
编译();
}
@凌驾
公共映射执行(映射输入){
映射输出=空;
Map inputsParams=新的HashMap();
Long masterTestId=(Long)inputs.get(DbSubseaConstants.MASTER\u TEST\u ID);
inputsParams.put(DbSubseaConstants.MASTER\u TEST\u ID,masterTestId);
输出=super.execute(inputsParams);
返回输出;
}
}

您正在比较苹果和橙子。sql developer中的执行时间仅为sql和显示结果。它不涉及托管数据库资源、迭代结果和创建java对象。根据列的数量,1.2分钟可以快也可以慢。事实上,自定义的
行映射器可能比反射的
BeanPropertyRowMapper
更快(尽管在较新的spring版本中,已经完成了许多性能修复)。您正在比较苹果和桔子。sql developer中的执行时间仅为sql和显示结果。它不涉及托管数据库资源、迭代结果和创建java对象。根据列的数量,1.2分钟可以快也可以慢。事实上,定制的
行映射器
可能比反射的
BeanPropertyRowMapper
更快(尽管在较新的spring版本中,已经完成了许多性能修复)。