当前位置: 首页 > 面试题库 >

Hibernate表类是否需要可序列化?

马亮
2023-03-14
问题内容

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

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

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


问题答案:

这些类是否真正需要实现Serializable?

JPA规范(JSR 220)对其进行了很好的总结(对Hibernate同样适用):

2.1对实体类的要求
(…)
如果要通过值将实体实例作为分离的对象(例如,通过远程接口)传递,则实体类必须实现该Serializable接口。

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

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

我认为您可以使用序列号(Ant)Tasks批处理此任务。



 类似资料:
  • 问题内容: 我继承了一个使用Hibernate 3.0连接到SQL Server数据库的Websphere Portal项目。 这个项目中大约有130个Hibernate表类。它们都实现了可序列化。它们均未声明serialVersionUID字段,因此Eclipse IDE对所有这些类均显示警告。 这些类是否真正需要实现Serializable? 如果是这样,是否有任何工具可以一次将生成的seri

  • 问题内容: 我正在使用Hibernate Search,文档和书籍说我在id字段上需要@DocumentId,以便Hibernate Search可以知道如何将索引映射到对象。 没有代码中的@DocumentId,我的代码似乎运行良好。Hibernate Search是否变得足够聪明,以至于@Id字段是一个很好的默认值?是否会引起一些不明显的问题? 谢谢你的时间! 问题答案: 如果您使用的是老式的

  • 问题内容: 我们有一些Hibernate getter方法,它们都用和标注。 如果没有相应的设置器,则会出现异常。为什么是这样? 在我们的例子中,我们派生了从getter返回的值(将其存储在DB中),而setter没有任何功能目的。因此,我们只有一个空方法可以解决错误情况。 问题答案: 正如其他人提到的那样,如果您注释属性getter方法,则Hibernate在从数据库读取值时会使用setter。

  • 如果类B扩展了类A,则类B实现可序列化,而类A有一个不可序列化的公共非静态初始化变量。。。尝试使用FileOutputStream的writeObject()方法写入类“B”对象时,将序列化从a继承的不可序列化成员,以便将其与类B的其余变量一起写入文件,还是将引发NotSerializableException?我试过了,效果不错,但我不知道为什么。。。所以我不确定它是否总是有效,或者我错过了什么

  • 问题内容: 接口是100%抽象的类,因此我们可以使用接口进行高效编程。在任何情况下,抽象类都比接口更好吗? 问题答案: 当您确实想创建一个具体的类,但要确保所有子类中都存在某种 公共状态 ,或者某些操作可能具有某种 公共实现 时,可以使用抽象类。 接口不能包含任何一个。

  • 随着新的工具栏小部件的引入和AppCompat(android.support.v7.widget.Toolbar)版本的推出,是否还需要调用setSupportActionbar(工具栏)?或者调用setSupportActionbar有什么好处吗;现在我们可以设置标题、子标题、导航图标、导航图标单击侦听器(getSupportActionBar()。直接在工具栏上设置DisplayHomeAs