内容摘要:本文阐述了怎么使用DBMS存储过程。我阐述了使用存储过程的基本的和高级特性,比如返回ResultSet。本文假设你对DBMS和JDBC已经非常熟悉,也假设你能够毫无障碍地阅读其它语言写成的代码。
这允许在ResultSet数据上执行任意的处理,而不需要改变或者复制获取ResultSet的方法:
staticvoidsendEarlyDeaths(finalPrintWriterout){ ProcessPoetDeathsmyMapper=newProcessPoetDeaths() { publicvoidsendDeath(Stringname,intage) { out.println(name+"was"+age+"yearsold."); } }; mapEarlyDeaths(myMapper);}这个方法使用ProcessPoetDeaths的一个匿名实例调用mapEarlyDeaths。该实例拥有sendDeath方法的一个实现,和我们上面的例子一样的方式把结果写入到输出流。当然,这个技巧并不是存储过程特有的,但是和存储过程中返回的ResultSet结合使用,是一个非常强大的工具。
结论
存储过程可以帮助你在代码中分离逻辑,这基本上总是有益的。这个分离的好处有:
•快速创建应用,使用和应用一起改变和改善的数据库模式。
•数据库模式可以在以后改变而不影响Java对象,当我们完成应用后,可以重新设计更好的模式。
•存储过程通过更好的SQL嵌入使得复杂的SQL更容易理解。
•编写存储过程比在Java中编写嵌入的SQL拥有更好的工具--大部分编辑器都提供语法高亮!
•存储过程可以在任何SQL命令行中测试,这使得调试更加容易。
并不是所有的数据库都支持存储过程,但是存在许多很棒的实现,包括免费/开源的和非免费的,所以移植并不是一个问题。Oracle、PostgreSQL和DB2都有类似的存储过程语言,并且有在线的社区很好地支持。
存储过程工具很多,有像TOAD或TORA这样的编辑器、调试器和IDE,提供了编写、维护PL/SQL或pl/pgsql的强大的环境。
存储过程确实增加了你的代码的开销,但是它们和大多数的应用服务器相比,开销小得多。如果你的代码复杂到需要使用DBMS,我建议整个采用存储过程的方式。
来源:豆豆网转载 作者:赛迪网 dongzc 责编:豆豆技术应用
正在加载评论...