Hibernate表类需要是Serializable吗?

时间:2010-04-28 01:31:04

标签: java hibernate orm serializable

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

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

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

5 个答案:

答案 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的编译器设置中禁用此警告 - 无论是对于项目还是整个工作区。