V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
heian0224
V2EX  ›  Java

业务逻辑该放在哪?

  •  
  •   heian0224 · 2016-01-27 23:24:28 +08:00 · 4781 次点击
    这是一个创建于 3224 天前的主题,其中的信息可能已经有所发展或是发生改变。

    今天工作时做一个对外的 ejb 接口,我把业务逻辑放在 service 层,然后别人告诉我别这样写,要写在 plsql 里,写一个存储过程里面写业务逻辑.是这样吗? Action , Service , DAO 这三层之所以划分,不就是为了解耦业务逻辑, action 只负责分发 service , service 负责逻辑, dao 负责处理传过来的数据然后取数据。
    把业务逻辑写在 plsql 有更好吗??是我的理解有问题吗?

    13 条回复    2016-01-28 15:07:28 +08:00
    asj
        1
    asj  
       2016-01-28 05:41:50 +08:00 via Android
    目测这个别人超过 40 岁了
    heian0224
        2
    heian0224  
    OP
       2016-01-28 08:07:15 +08:00 via Android
    @asj 可惜猜错了,这个别人就比我大几岁
    jsrgqinbin
        3
    jsrgqinbin  
       2016-01-28 08:58:28 +08:00
    是不是电信类项目里出来的?
    ArthurKing
        4
    ArthurKing  
       2016-01-28 09:21:46 +08:00
    根据实际情况决定吧。现在的项目要处理大量数据,也会生成大量数据。业务逻辑中的数据处理部分放在存储过程里,数据只在数据库层面流动,减少了很多数据库与应用间的数据交换。而且运维方便,也方便数据库开发人员查找问题。
    weizhiyao008
        5
    weizhiyao008  
       2016-01-28 09:55:00 +08:00
    我也很喜欢把业务放到存储过程里面,但是也得分情况啊,并不是所有的都必须放到存储过程里面的,需要大量计算的,我就不放到存储过程里面
    xiamingchong
        6
    xiamingchong  
       2016-01-28 10:02:21 +08:00
    别听他的
    chengcanmm77
        7
    chengcanmm77  
       2016-01-28 10:31:10 +08:00
    这要是访问量大的话,数据库不会挂调?。。。
    domty
        8
    domty  
       2016-01-28 11:37:07 +08:00
    看别人的代码是怎么写的
    一般来说他告诉你这么写就是说这么写可能就是项目的开发标准

    项目代码最忌讳一个人一个风格 你把业务写 service 他把业务写成存储过程 维护和修改起来是很麻烦的
    heian0224
        9
    heian0224  
    OP
       2016-01-28 11:44:09 +08:00 via Android
    @chengcanmm77 访问量不会大,而且数据库挂掉也就是加钱加机器的事。

    @ArthurKing 减少数据库与应用交互这个可以理解,但这样做不符合分层的意义了,我直接取 dao 不就可以了,反正业务逻辑在 sql 中
    ArthurKing
        10
    ArthurKing  
       2016-01-28 13:55:47 +08:00
    @heian0224 根据项目实际情况来吧。不能死板的迎合分层的理念而去分层。在一些大数据量、业务逻辑复杂,且测试环境很难去模拟生产环境的项目中,你会发现把业务逻辑写在存储过程里还是很有必要的。
    wupher
        11
    wupher  
       2016-01-28 14:20:14 +08:00   ❤️ 1
    之前在做运营商系统中见过这种做法的。
    个人不喜欢这样,还是喜欢在 Java 代码中放入业务逻辑。好测试( TestCase ),易于重构与复用,也方便并发计算,换数据库(这事很少见,但是也碰到过)不至于当场晕倒。

    这种做法,虽然不认同,但是也能理解。有错误或者业务调整易于修复或改写;不需要重新部署。

    比较中立一点得说,看个人喜好了。确实有的同事对于 Java 语言实在无爱,就喜欢搞 Oracle ,啥都写存储过程的。
    heian0224
        12
    heian0224  
    OP
       2016-01-28 14:57:42 +08:00 via Android
    @ArthurKing 业务逻辑复杂写在存储过程可以理解,比如说一些跑批。但是有些业务就是查一点数据,两个 select 的事,就是迎合别的系统做的东西,基本不会公用,那我何必又放在存储过程?
    ArthurKing
        13
    ArthurKing  
       2016-01-28 15:07:28 +08:00
    @heian0224 强调了两次,按项目实际情况来。一般项目都可以逻辑放 service , dao 执行的只是简单的增删改查。但是有些项目就得根据实际情况选择适合的方式,而不是死板套模式
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1035 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 18:43 · PVG 02:43 · LAX 10:43 · JFK 13:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.