问答详情
源自:5-2 [Oracle] 在应用程序中访问存储过程

oracle存储过程 与 javabean的方式 获取信息区别在哪

老师 请教你个问题:在应用程序中调用oracle存储过程,我可以在java程序中通过javabean的方式 来查询数据库信息啊,区别在哪?

提问者:qq_小小小伟伟_0 2018-09-26 17:48

个回答

  • 苦糖咖啡
    2018-11-16 18:15:52

    你所说的"javabean的方式来查询数据库信息"是指使用类似Hibernate这种框架吗?

    不是很清楚你具体在问什么,但是我说下,在java中调用存储过程,和直接拼接SQL语句 或者用Hibernate、MyBatis的差别吧:

    首先,存储过程或者函数,它就是一个封装好了的方法,和java类中的“方法”,很类似(存储过程类比void返回类型的方法,函数类比有返回值int、string之类的方法)。只不过它的调用方式比较特殊,就像课程中讲的那样,用JDBC的方式去使用。

    其次,讲下存储过程的好处。实质而言,存储过程能做的事情,你自己写SQL(查出来数据,然后处理,然后update或者insert;Hibernate的话就是HQL),一样都能做。如果是一些简单的操作,就像仅仅查几个数据,查询结果完全相同(不可能同一条数据JDBC查是‘张三’,存储过程查是‘李四’的),而且存储过程反而麻烦。

    但是,存储过程,它是运行在数据库上的“方法”,你调用存储过程,从头到尾都只连接了一次数据库。如果是一些复杂的操作,比如先查询几个表信息,然后进行计算,再update或者delete几张表的数据,你用存储过程封装好,连接一次数据库就够了;可如果用JDBC拆成一个个SQL,或者用Hibernate,那每一个select,每一个update,每一个delete,都需要连接一次数据库。如果你是学生,最多只需要做毕业设计之类的小程序,还没问题,但在实际工作过程中,频繁的连接数据库,很耗费资源的,并发量一高,小心你的连接数不够用。

    而且,存储过程的计算,都是在数据库服务器上,java程序只是连接了一下数据库,而没有进行多少计算。