55

我继承了一个使用 Hibernate 3.0 连接到 SQL Server 数据库的 Websphere Portal 项目。

这个项目中大约有 130 个 Hibernate 表类。它们都实现了可序列化。它们都没有声明 serialVersionUID 字段,因此 Eclipse IDE 显示所有这些类的警告。

这些类是否真的需要实现可序列化?
如果是这样,是否有任何工具可以一次将生成的 serialVersionUID 字段添加到大量类中(只是为了使警告消失)?

4

5 回答 5

76

这些类是否真的需要实现可序列化?

JPA 规范(JSR 220)很好地总结了它(同样适用于 Hibernate):

2.1 对实体类的要求

(...)

如果一个实体实例作为一个分离的对象按值传递(例如,通过一个远程接口),实体类必须实现该Serializable接口。

因此,严格来说,这不是必需的,除非您需要将分离的实体通过线路发送到另一层、迁移到另一个集群节点、存储在 HTTP 会话中等。

如果是这样,是否有任何工具可以一次将生成的 serialVersionUID 字段添加到大量类中

我认为您可以使用Serial version (Ant) Tasks批量处理。

于 2010-04-28T02:03:37.417 回答
8

Hibernate 根本不需要可序列化。

于 2010-04-28T01:54:36.877 回答
5

Eclipse 的“清理”命令可以做到这一点。但是,它还有更多功能,因此在将其用于整个包之前对其进行测试并优化清理和格式设置。

于 2010-04-28T01:54:29.080 回答
2

我不熟悉可以为一堆类自动执行此操作的工具,尽管您可以编写一个脚本。

如果您使用 Eclipse 机械地执行此操作,那么每节课花费的时间不应超过 4-5 秒,这可能仍然比脚本更快。

于 2010-04-28T01:38:51.657 回答
2

如果是这样,是否有任何工具可以一次将生成的 serialVersionUID 字段添加到大量类中(只是为了使警告消失)?

您可以在 Eclipse 的编译器设置中禁用此警告 - 无论是针对项目还是整个工作区。

于 2010-04-28T03:52:34.393 回答