本帖最后由 WorkDayAndKnight 于 2010-08-26 16:34:20 编辑

解决方案 »

  1.   

    第一种情况也就是java代码逻辑和oracle procedure/function/trigger一起使用的情况,我们项目就是这样使用的,trigger可以很好的在java端被事务管理起来(无论是用代码编写transaction还是通过spring这样的配置管理transaction都可以),所以,这样做没有技术问题,但是这样的话,代码逻辑不是非常清晰,我们项目采用这种使用方式有历史原因,我觉得不是很稳妥。第二种情况也就是完全使用存储过程的方式,与第三种情况比较起来,我举例来说,一边是5次java客户端到数据库端的jdbc调用,考虑到网络状况,并且是独立的5次sql statement,一边是数据库的一个完整的procedure(包含5次调用),从效率来说oracle procedure是完胜的。如果你擅长存储过程编写和调试,并且不介意程序代码逻辑分散的话,可以考虑使用procedure。
    如果从项目管理,和代码逻辑完整的角度考虑,不介意那一点点性能提升的话,可以考虑第三种情况,完全写在java代码里
      

  2.   

    不是什么重要数据  procedure 删吧
      

  3.   

    某些场合可能只能采用逻辑删除,这时级联什么的就不能用了存储过程或触发器或java事务代码区别不大(从完成功能角度来说),但是维护起来不一样,写在数据库里面和数据在一起 可能维护更简单一些,各自做自己擅长的。如果写在程序语言中,比如java,此时要用另外一种语言开发前端,同样的事情又要再写一次了!写在数据库里面的话就可以复用了。