Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java持久性应用程序无状态与有状态_Java_Jpa_Stateless_Stateful - Fatal编程技术网

Java持久性应用程序无状态与有状态

Java持久性应用程序无状态与有状态,java,jpa,stateless,stateful,Java,Jpa,Stateless,Stateful,我是JPA新手,我无法理解无状态和有状态的用法和区别 有什么经验吗 问候,, 它们是EJB会话Bean的概念,而不是 Nota bene:JPA是EJB规范的一部分,但可以单独使用,也可以在EJB容器外部使用。这通常是造成混乱的原因 编辑:一个有用的SO线程。有状态和无状态是(Java EE容器管理的会话bean)的属性,而不是特定于JPA规范的任何属性。对于来自同一客户机的每个请求,bean都有与之关联的状态。bean没有特定于客户端的状态,单个实例可以在多个客户端请求之间并发使用,线程安全

我是JPA新手,我无法理解无状态和有状态的用法和区别

有什么经验吗

问候,, 它们是EJB会话Bean的概念,而不是

Nota bene:JPA是EJB规范的一部分,但可以单独使用,也可以在EJB容器外部使用。这通常是造成混乱的原因


编辑:一个有用的SO线程。

有状态和无状态是(Java EE容器管理的会话bean)的属性,而不是特定于JPA规范的任何属性。对于来自同一客户机的每个请求,bean都有与之关联的状态。bean没有特定于客户端的状态,单个实例可以在多个客户端请求之间并发使用,线程安全

JPA是一种可用于持久化有状态bean的持久化策略(我猜您也可以直接使用JDBC,或者插入其他持久化策略)。

会话bean的属性是“有状态”和“无状态”

会话bean(简而言之)提供了一种在应用服务器上调用方法的方法。bean是java类的一个实例。通常,bean在远程方法终止(并返回结果)后被销毁。这些bean是“无状态的”


可以(但不常见)向bean添加字段和属性,以便客户端可以在服务器上“创建”该实例,并将其用于多个操作。这些bean是“有状态的”(应该避免)。

我认为部分混淆是Java持久化API是EJB3规范的一部分,有时似乎可以与EJB互换使用。直到我第一次学习proejb3:javapersistenceapi,我才真正理解这一点。看一看,它似乎提供了一个很好的主题概述。

基本上,正如您所知,Java编译东西,然后在运行时看到应用程序,如果在类加载器之后一切顺利,并避免了执行阶段的错误以及所有这些,当您存储变量时,对象等等,当用户与应用程序交互时,这些数据可能会发生变化,然后您开发了一个全状态的应用程序,如果您认为代码逻辑中没有动态的东西(可以改变应用程序行为的东西),那么您将要开发一个无状态的应用程序


简而言之,statefull应用程序意味着在运行期间类属性的动态更改。

+1:简洁,但正确。应该注意,JPA是EJB规范的一部分,但可以单独使用,也可以在EJB容器之外使用。这就是造成混乱的原因。谢谢,达里奥,你的建议已添加到帖子中。:)有状态会话bean不是在购物车应用程序中使用吗?那么…如果至少有一个用例,为什么要避免有状态bean呢?