我理解独立应用程序中Thread的基本概念。但是,在以下几个方面感到困惑。
1)。在Java webapplication(基于servlet和Spring)中?
我希望,每个请求都由不同的线程处理。它是否正确?还有其他定义吗?
2)。什么是Hibernate与Spring MVC的线程? 会话工厂是线程安全的..其中会话对象不是。线程的意思是什么?
请帮助我理解这一点。
答案 0 :(得分:2)
1)应用服务器有一个线程池,当一个请求进来时,它被从池中分配一个线程。同一个线程调用调度程序servlet,它调用一个控制器,调用一个服务等,最后创建一个HttpResponse并将其发送给客户端。
2)Hibernate的常用模式(如果你不使用Seam对话)是session-per-request:
2.4.2。每个请求的会话模式
这是最常见的交易模式。这里的术语请求 涉及对一系列请求作出反应的系统的概念 来自客户/用户。 Web应用程序是此类型的主要示例 系统虽然肯定不是唯一的系统。在。。。之初 处理这样的请求,应用程序打开一个Hibernate Session, 启动一个事务,执行所有与数据相关的工作,结束 事务并关闭会话。模式的关键是 交易与会话之间的一对一关系。
事务由Spring存储在threadlocal变量中。所以该线程有一个Hibernate会话(仅限于该线程),它与一个事务(或一堆事务,因为它们可以嵌套)相关联。