Web应用程序中的线程(servlet,Spring,hibernate)

时间:2014-05-28 13:40:29

标签: java spring hibernate servlets

我理解独立应用程序中Thread的基本概念。但是,在以下几个方面感到困惑。

1)。在Java webapplication(基于servlet和Spring)中?

我希望,每个请求都由不同的线程处理。它是否正确?还有其他定义吗?

2)。什么是Hibernate与Spring MVC的线程? 会话工厂是线程安全的..其中会话对象不是。线程的意思是什么?

请帮助我理解这一点。

1 个答案:

答案 0 :(得分:2)

1)应用服务器有一个线程池,当一个请求进来时,它被从池中分配一个线程。同一个线程调用调度程序servlet,它调用一个控制器,调用一个服务等,最后创建一个HttpResponse并将其发送给客户端。

2)Hibernate的常用模式(如果你不使用Seam对话)是session-per-request

  

2.4.2。每个请求的会话模式

     

这是最常见的交易模式。这里的术语请求   涉及对一系列请求作出反应的系统的概念   来自客户/用户。 Web应用程序是此类型的主要示例   系统虽然肯定不是唯一的系统。在。。。之初   处理这样的请求,应用程序打开一个Hibernate Session,   启动一个事务,执行所有与数据相关的工作,结束   事务并关闭会话。模式的关键是   交易与会话之间的一对一关系。

事务由Spring存储在threadlocal变量中。所以该线程有一个Hibernate会话(仅限于该线程),它与一个事务(或一堆事务,因为它们可以嵌套)相关联。