Java开发之道
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

谬误5 片面之词——所有的业务逻辑都应由程序代码来实现

在程序中,所有的业务逻辑都由程序代码实现,是完全可以的,但是考虑到软件的性能,应该将一些底层的东西用数据库来实现,这样可以提高程序的执行效率,因此,说所有业务逻辑都应由程序代码来实现也是不正确的。

技巧

如计算金额、汇总金额等,可以由数据库的存储过程来实现,程序只需要调用存储过程,获得想要的结果就可以了,这样可以减轻程序的负担,有利于提高程序的执行效率,从而也充分利用了数据库本身的功能。

例如,数据库中有如下存储过程,用于获得两个数的最大值:

    create procedure p_two_int_max (@x int, @y int, @max int output)  AS
    if (@x>@y)
    begin
      set @max=@x
    end
    else
    begin
      set @max=@y
    end

说明

上面存储过程中的@x和@y是传入参数,代表要求最大值的两个整数,@max是传出参数,代表所求出的两个整数@x和@y中最大的那个值。

示例:

    CallableStatement cs = conn. prepareCall ("{Call p_two_int_max (? , ? , ?)}");
    cs. setInt (1, 500);               // 为第1个传入参数指定值
    cs. setInt (2, 200);               // 为第2个传入参数指定值
    // 注册传出参数,即存储过程的第3个参数,也就是最终求出的最大值
    cs. registerOutParameter (3, Types.INTEGER);
    cs. execute ();                    // 执行存储过程
    int max = cs. getInt (3);          // 通过传出参数获得两个整数的最大值

说明

假设上面代码中用到的数据库连接对象conn 是有效的,则程序执行上面代码后,max变量的值将是500,即500与200中的最大值,这样,程序就不必编写业务逻辑来实现求两个数的最大值,而是由数据库的存储过程来实现,从而提高了程序的执行效率。