职业IT人-IT人生活圈

 找回密码
 成为会员
搜索
查看: 946|回复: 4

关于spring对象使用的讨论

[复制链接]
木已 发表于 2011-9-2 11:58 | 显示全部楼层 |阅读模式
     我在开发过程中,出现这样一个争论:
     前提,系统分为service和dao两层,使用spring管理所有对象,dao一般是通过配置文件注入到service中,service中也可以直接从spring容器中获取任何对象。
     如果在一个servic中要实现一个复杂的业务,这个业务分为两部分操作,其中第一部分是一个整体的事务,第二部分是一个直接的对dao的调用,并且第二部分在其他service中已经实现。
     举例:有一个部门操作的service,其中一个操作为删除部门和该部门下的所有人。这个业务就分为两部分,第一部分是删除人员,该部分在一个人员管理的service中有实现接口,实现方式删除人员的同时删除人员的权限并备份人员信息;第二部分是调用dao直接删除部门。
     我们争论的焦点在于,在部门Service里删除部门的方法中第一部分是应该调用人员Service中已经实现的接口,还是应该去注入人员dao,自己实现删除人员的每一步操作。

     希望大家能积极参与讨论!!!

爱车车 发表于 2011-9-2 11:58 | 显示全部楼层
能复用的话,当然是调用Service

话说我当年 发表于 2011-9-2 11:58 | 显示全部楼层
看方法的难以程序吧,如果直接调用service的花,数据库方面的开销是否相对大一点?
事物处理的整个过程是否会出现问题?
这个是需要考虑的!
如果你这个动作是想确保事务没有问题的话,还是建议使用dao去实现!
基本没遇到过这样的问题,复用 和 事务的完整  应该考虑下。
另外 在一个事务中,提交一个事务。会不会影响当前事务的提交?
这个也是个疑问!
如果想复用,而这2个动作又没有事务要求的话。建议在col层复用!

Jethro 发表于 2011-9-2 11:58 | 显示全部楼层
1,可以把一些公用的操作逻辑(例如你的删除部门和部门内人员)提取出来放和service同层,例如叫CommonService,在其他service中使用commonService中的同一个操作。
2,也可以把这些公用的函数写在抽象类中,你那些Service继承这个类。


fossil 发表于 2011-9-2 11:59 | 显示全部楼层
15210494746 写道
看方法的难以程序吧,如果直接调用service的花,数据库方面的开销是否相对大一点?
事物处理的整个过程是否会出现问题?
这个是需要考虑的!
如果你这个动作是想确保事务没有问题的话,还是建议使用dao去实现!
基本没遇到过这样的问题,复用 和 事务的完整  应该考虑下。
另外 在一个事务中,提交一个事务。会不会影响当前事务的提交?
这个也是个疑问!
如果想复用,而这2个动作又没有事务要求的话。建议在col层复用!

赞成,这肯定要根据你实际的实现上考虑能不能服复用的了,单纯的说选择哪一个好,还真不好说,当然写自己手动实现dao肯定没有问题,毕竟这dao的实现是你能控制的,人员service,人员dao...看的蛋痛..
您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

QQ|手机版|小黑屋|网站帮助|职业IT人-IT人生活圈 ( 粤ICP备12053935号-1 )|网站地图
本站文章版权归原发布者及原出处所有。内容为作者个人观点,并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是信息平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽造成漏登,请及时联系我们,我们将根据著作权人的要求立即更正或者删除有关内容。

GMT+8, 2024-5-3 17:13 , Processed in 0.130601 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表