Hibernate表类是否需要Serializable?
我inheritance了使用Hibernate 3.0连接到SQL Server数据库的Websphere Portal项目。
这个项目中大约有130个Hibernate表类。 他们都实现了Serializable。 没有一个声明serialVersionUID字段,所以Eclipse IDE显示了所有这些类的警告。
有没有实际需要这些类来实现Serializable?
如果是这样,是否有任何工具来一次添加生成的serialVersionUID字段到大量的类(只是为了使警告消失)?
有没有实际需要这些类来实现Serializable?
JPA规范(JSR 220)总结得非常好(同样适用于Hibernate):
2.1对实体类的要求
(……)
如果一个实体实例被作为一个分离的对象(例如,通过一个远程接口)被传递,实体类必须实现
Serializable
接口。
因此,严格来说,除非您需要将分离的实体通过线路发送到另一个层,迁移到另一个集群节点,存储在HTTP会话中,否则这不是必需的。
如果是这样,是否有任何工具来一次添加生成的serialVersionUID字段到大量的类
我认为你可以使用Serial版本(Ant)任务进行批处理。
Eclipse的“ 清理 ”命令可以做到这一点。 然而,它也做了很多的事情,所以在整个软件包上使用它之前,先对它进行testing并优化清理和格式化设置。
Hibernate根本不需要可序列化。
我不熟悉一个工具,它会自动为一堆的类,但你可以写一个脚本。
如果你用Eclipse来机械地做到这一点,那么每个类不应该超过4-5秒,这可能比脚本还要快。
如果是这样,是否有任何工具来一次添加生成的serialVersionUID字段到大量的类(只是为了使警告消失)?
您可以在Eclipse的编译器设置中禁用此警告 – 对于项目或整个工作空间。
- 在Java中序列化和反序列化android.graphics.Bitmap
- NewtonSoft.Json使用IEnumerable <ISomeInterface>types的属性对类进行序列化和反序列化
- 任务不是可序列化的:java.io.NotSerializableException仅在类不是对象时调用函数外的函数
- 在C#中序列化匿名代表
- 从string反序列化而不是TextReader
- DataContractSerializer不会调用我的构造函数?
- 在C#中序列化和反序列化expression式树
- 你可以指定一个date时间的XmlSerialization的格式?
- 如果抽象类有一个serialVersionUID