spring struts2 mybatis相关疑问

数据库采用连接池,事务在service上。今天在开会的时候,有个同事说事务在service上,当调用该service的方法是就打开了该连接,离开方法时才关闭该连接,影响效... 数据库采用连接池,事务在service上。
今天在开会的时候,有个同事说事务在service上,当调用该service的方法是就打开了该连接,离开方法时才关闭该连接,影响效率,应该把事务放在dao上。我想说的是在采用连接池时连接其实是一直打开的,并不是在调用service时才打开,所以不存在上述效率问题。我的理解对吗?
展开
 我来答
javaiswhat
2012-08-22 · 超过40用户采纳过TA的回答
知道小有建树答主
回答量:142
采纳率:0%
帮助的人:72.8万
展开全部
对不起,你的理解错了。你的意思是数据库链接一直打开(一直链接浪费资源),其实不需要。工作中也不是的(至少我不是)当调用到数据库操作是才连接。至于事务的问题,个人觉得应该放在接口上(即dao)上。如果你对spring事务管理了解的话,就很明白它为何这么设计。我理解其实是一种设计模式(工厂)。控制接口来达到控制服务的目的。比如一个造鞋的工厂,只需要改变模具(接口)就行,不需要考虑是造运动鞋还是休闲鞋(service)。
如果想彻底了解的话,建议你看看spring底层的事务控制的源码。希望可以帮到你~
追问
还是关于连接池
连接池在初始化的时候就生成N个连接在池子里,你操作数据库的时候拿来就可以用,而当你事务结束的时候只是释放了连接把它重新放回到池子里,并不是这个链接就关闭了,也就是说连接池里的连接始终都是处于连接状态的。
我以上的理解不对吗?如果对的话,跟事务放在service上有关系吗?影响效率从何谈起?有点不懂,
追答
链接池的机制处理不太清楚,我们一般事务控制都是在接口层次的(dao)。具体的你可以问问技术牛逼的。感觉控制接口比控制接口下调用的service要好,可能是经验让我们这么做的。但是还要具体情况具体分析。
jdwangyongtao
2012-08-27
知道答主
回答量:5
采纳率:0%
帮助的人:7786
展开全部
主要是看应用了。
如果是单数据库,单表,当然放到dao 上。
那如果是 多个数据库呢
还有就是 多个数据库+服务呢

具体情况具体对待,关于你说的效率,我感觉都没有影响。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式