我继承了一个使用Hibernate 3.0连接到SQL Server数据库的Websphere Portal项目。
这个项目中大约有130个Hibernate表类。它们都实现了Serializable。它们都没有声明serialVersionUID字段,因此Eclipse IDE会显示所有这些类的警告。
这些类是否真的需要实现Serializable?
如果是这样,是否有任何工具可以同时将生成的serialVersionUID字段添加到大量类中(只是为了使警告消失)?
答案 0 :(得分:57)
这些类是否真的需要实现Serializable?
JPA规范(JSR 220)很好地总结了它(同样适用于Hibernate):
2.1对实体类的要求
(...)
如果要将实体实例作为分离对象(例如,通过远程接口)传递,则实体类必须实现
Serializable
接口。
因此,严格来说,除非您需要通过网络将分离的实体发送到另一个层,迁移到另一个群集节点,存储在HTTP会话中等,否则这不是必需的。
如果有,是否有任何工具可以将生成的serialVersionUID字段一次性添加到大量类中
我认为您可以使用Serial version (Ant) Tasks批量处理。
答案 1 :(得分:6)
Hibernate根本不需要序列化。
答案 2 :(得分:5)
Eclipse的“Clean Up”命令可以做到这一点。但是,它还可以进行更多测试,并在整个软件包上使用它之前优化清理和格式设置。
答案 3 :(得分:2)
我不熟悉一个可以自动为一堆类做的工具,不过你可以编写一个脚本。
如果您使用Eclipse机械地执行此操作,则每个类不应超过4-5秒,这可能仍然比脚本更快。
答案 4 :(得分:2)
如果有,是否有任何工具可以同时将生成的serialVersionUID字段添加到大量类中(只是为了使警告消失)?
您可以在Eclipse的编译器设置中禁用此警告 - 无论是对于项目还是整个工作区。