POJO 类 正在序列化,没有 read/write 用法

POJO Classes being serialized with no read/write usage

我是 SPRING 的新手,被指派从事当前正在开发的项目。不幸的是,该项目的开发进展缓慢,所以人们来来去去,所以我不能问他们为什么有些事情以某种方式完成。

该项目是使用 SPRING 的 Web 服务。

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

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

POJO 是从 DAO 中的 Oracle 语句填充的,它向上冒泡到视图,然后向下冒泡回到 DAO,在那里它们的信息使用 Oracle 语句写入数据库。 POJO本身并没有写入数据库。

SPRING MVC 或 java Web 应用程序是否需要序列化并且正在后台使用?是否需要在服务器和客户端连接之间传输数据?是否有充分的理由让所有 POJO 都在使用新手无法识别的它?

使用 Java 的 default serialization 是常规 POJO 的正常方式。

Java specifies a default way in which objects can be serialized. Java classes can override this default behavior. Custom serialization can be particularly useful when trying to serialize an object that has some unserializable attributes.

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

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

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

这可能不是正确的答案,但到目前为止,就我而言,它匹配并解释了我所看到的。我没有在其他地方看到过这个信息,但是这个答案得到了很好的支持,已经存在了一段时间,而且来自一个高信誉的用户,所以我倾向于相信它。

另一个问题中有一个 answer 他们提到了一些重要的事情。

As to the why you need to worry about serialization, this is because most Java servlet containers like Tomcat require classes to implement Serializable whenever instances of those classes are been stored as an attribute of the HttpSession. That is because the HttpSession may need to be saved on the local disk file system or even transferred over network when the servlet container needs to shutdown/restart or is being placed in a cluster of servers wherein the session has to be synchronized.

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