怎么理解ssh中dao和service是单例的

问题描述

怎么理解ssh中dao和service是单例的

当多个请求调用单例service时为什么数据不会出现互相干扰?比如进行查询传进一个id,
当一请求来时栈指向堆中唯一的service进行查询,没查询完另一个请求也进来查询,
两者都指向那个service,数据不会出错么?

解决方案

线程有同步,后来的调用被阻塞,直到之前的运行完。

解决方案二:

hibernate的session submit本身有同步。
不过你的业务如果不是原子性的,你又没加锁,的确可能有问题。

解决方案三:

SSH中注解的Service和DAO默认都是单例模式的,但是可以通过@Scope注解修改实例对象生成的方式。
单例只是说明项目中所有自动注入的、相同的Service的对象都是同一个。
两个请求是在不同的线程中处理时,调用查询引用的是同一个对象的查询方法,如果查询方法中没有涉及到对这个对象的共享属性的修改,是没有问题的。
但是如果有对共享属性的修改,则需要同步处理。这方面建议你去看看Java的多线程同步的知识。祝好!

解决方案四:

dao和service对外提供的是方法,方法内只使用局部变量的情况下,每个线程间是完全独立的,分别使用单独的栈帧。
简单来说就是每个线程走的逻辑相同,但并没有用到共享的数据,所以可以用单例模式~

解决方案五:

Action会封装实例变量,不是线程安全的,所以定义为多例,而service,dao封装的变量是无状态的,线程安全的,所以一般定义为单例。可以去了解下有状态,和无状态对象。

时间: 2024-09-19 09:01:47

怎么理解ssh中dao和service是单例的的相关文章

SSH中Action 的service 空指针错误

问题描述 Action代码:publicclassListMemberextendsActionSupport{//通过applicationContext.xml配置文件注入memberService的值privateMemberServicememberService;publicMemberServicegetMemberService(){returnmemberService;}publicvoidsetMemberService(MemberServicememberService)

SSH中action到service的错误

问题描述 架构环境Struts2.1+Spring2.5+Hibernate3.3开发环境MyEclipse8.5action类中的方法//管理员登陆处理public String loginc() {String b=admin.getAdUserId();System.out.println("sssssssssssssssssss"+b);Tadmin a = adminService.findUniqueByProperty("adUserId", b);

web xml-如何在dao和service中获得session和request

问题描述 如何在dao和service中获得session和request 在DAO层中需要insert一条record,这条record需要记录当前用户(该记录是由谁创建的),对于这样的应用,我们一般可以在Action层中通过request拿到session里的用户账号,然后传入service,再传入DAO层.思路是这个! 可是我们公司,用了一个工具类 public class SessionHelpUtils { /** * @return * @Description:获得当前sessio

ssh中把service注入到action,为什么不能注入service的实现类

问题描述 在网上看到这样一句话:"把DAO实现类注入到service实现类中,把service的接口(注意不要是service的实现类)注入到action中",确实如此,比如UserServiceImpl实现了接口UserService,当我在UserAction中写private UserServiceImpl userService;@Resourcepublic void setUserService(UserServiceImpl userService) {this.user

dao和service-有没有大神能详细解读一下DAO和Service的区别和其具体的作用???

问题描述 有没有大神能详细解读一下DAO和Service的区别和其具体的作用??? 求详细解读一下DAO和Service的区别和其具体的作用???,困惑中,求解答.... 解决方案 在MVC架构体系中,DAO担当的是数据访问层,DAO是Data Access Objects的缩写,它主要的职责是与数据库交互,大多是与数据库的表或视图一一对应的,包括的基本方法主要是基于关键字段的数据库增删查改操作. Service直译是服务的意思,担当业务逻辑层,主要作为控制层和数据访问层的中介作用,Servic

hql参数绑定-ssh中hql的参数绑定用不了,总是不识别

问题描述 ssh中hql的参数绑定用不了,总是不识别 Query query=getSession().createQuery("from com.pm.entity.Pro where proState=?"); query.setString(0,"正常"); list=query.list(); t.commit(); return list; 解决方案 用其它的绑定方法也不行,只能拼接,这是怎么回事 解决方案二: 报什么错误 还是??? 解决方案三: 参考一

Dao和Service都用了基类,非通用类写在专属service出错,写在action正常

问题描述 大家帮我看看我Dao和Service都用了基类,都通用的还正常,非通用类写在专属service出错,写在action正常.BarepackageUploadAction调用BarepackageServiceImpl这个类的updatePhoto(StringphotoFileName,Integerid,IntegerphotoSn)就会报错,把这个函数的内容直接写到action里就正常.错误信息:org.hibernate.HibernateException:NoSessionf

.NET中的Web service的开发

web .NET平台内建了对Web service的支持,包括Web service的构建和使用. 与其它开发平台不同,使用.NET平台,你不需要其他的工具或者SDK就可以完成Web service的开发了..NET Framework本身就全面支持Web service,包括服务器端的请求处理器和对客户端发送和接受SOAP消息的支持.本节将带你用.NET创建和使用一个简单的Web service.要在.NET中创建Web service,你只需建立一个.asmx文件.这个文件中有一个WebSe

我的WCF之旅(6):在Winform Application中调用Duplex Service出现TimeoutExce

我的WCF之旅(6):在Winform Application中调用Duplex Service出现TimeoutException原因和解决 几个星期之前写了一篇关于如何通过WCF进行 双向通信的文章([原创]我的WCF之旅(3):在WCF中实现双向通信(Bi-directional Communication) ),在文章中我提供了一个如果在Console Application 调用Duplex WCF Service的Sample.前几天有个网友在上面留言说,在没有做任何改动得情况下,把