Java 正在序列化没有读/写使用的POJO类

Java 正在序列化没有读/写使用的POJO类,java,spring,oracle,serialization,pojo,Java,Spring,Oracle,Serialization,Pojo,我是SPRING的新手,被分配到目前正在开发的项目中工作。不幸的是,项目进展缓慢,所以人们来来往往,所以我不能问他们为什么有些事情是以某种方式进行的 该项目是一个使用SPRING的web服务 他们使用的是视图-控制器-服务(接口和实现)-DAO(接口和实现)-POJO(用于跨层传输数据结构的类) 我检查过的每个POJO实现序列化。仔细检查和搜索代码后,POJO本身或任何其他文件中都不会写入或读取任何POJO。这让我不禁要问为什么要这样做 POJO是从DAO中的Oracle语句填充的,这些语句向上

我是SPRING的新手,被分配到目前正在开发的项目中工作。不幸的是,项目进展缓慢,所以人们来来往往,所以我不能问他们为什么有些事情是以某种方式进行的

该项目是一个使用SPRING的web服务

他们使用的是视图-控制器-服务(接口和实现)-DAO(接口和实现)-POJO(用于跨层传输数据结构的类)

我检查过的每个POJO实现序列化。仔细检查和搜索代码后,POJO本身或任何其他文件中都不会写入或读取任何POJO。这让我不禁要问为什么要这样做

POJO是从DAO中的Oracle语句填充的,这些语句向上冒泡到视图,然后再向下冒泡到DAO,在DAO中使用Oracle语句将来自POJO的信息写入数据库。POJO本身不会写入数据库

SpringMVC或JavaWeb应用程序是否需要序列化,并且正在后台使用?是否需要在服务器和客户端连接之间传输数据?所有的POJO都在使用它,有没有一个很好的理由让新手无法识别?

使用Java是常规POJO的正常方式

Java指定了对象序列化的默认方式。Java类可以覆盖此默认行为。当试图序列化具有某些不可序列化属性的对象时,自定义序列化可能特别有用


取决于层中使用的技术以及实现细节

如果持久化是使用JPA/Hibernate完成的,那么POJO很可能需要可序列化


如果POJO通过servlet会话传递给view,并且会话复制处于打开状态,那么您需要使POJO可序列化。

这可能不是正确的答案,但就我的情况而言,它匹配并解释了我看到的内容。我还没有看到其他地方提到的这些信息,但答案是经过充分投票的,已经存在了一段时间,并且来自一个声誉很高的用户,所以我倾向于相信它

还有一个问题,他们提到了一些重要的事情

至于为什么需要担心序列化,这是因为像Tomcat这样的大多数JavaServlet容器都需要类来实现可序列化,只要这些类的实例被存储为HttpSession的属性。这是因为当servlet容器需要关闭/重新启动或被放置在必须同步会话的服务器集群中时,HttpSession可能需要保存在本地磁盘文件系统上,甚至需要通过网络传输


我正在使用的应用程序确实使用Tomcat,因此如果这是一种限制或行为,那么我很容易理解为什么所有POJO都是以这种方式创建的,只是为了避免以后可能出现的问题,这是以前使用过它的经验的结果,而这正是我所缺乏的经验。

Spring MVC端/或java web应用程序不需要序列化。我猜他们这样写代码是为了让所有的代码都可以序列化object@AngeloImmediata他们想要这样做有什么原因吗?一些设计原则,从旧的实践中继承下来,…?我实际上使用了那篇文章来执行搜索,以查看它们是否在任何地方被读取或写入。@Fering如果可以使用循环(对象作为其自身的成员)序列化,您将添加序列化例如,我去查看,但我没有看到任何循环序列化发生。这是一个快速查看,因此我可能遗漏了一些内容,但我看到的是,该类在列表中用于表示数据库信息,并被发送到视图,如果有什么改变,就把它放回数据库。为什么JPA实体需要序列化?@chrylis这个问题实际上没有任何正确的答案。公认的答案是胡说八道。链接的重点不是公认的答案,而是您可能会在Hibernate中遇到不可序列化的实体异常,将JPA实体标记为可序列化已成为惯例。因此,我们团队中有一名新员工,他碰巧解释了原因,您关于前端视图需要如何访问java类的评论是,为什么要对它们进行序列化,这是您的第三点,但我没有理解