为什么一个类实现了Serializable接口?

Joh*_*per 6 java jpa

@Entity
public class Husband implements Serializable {

   @Id
   private int id;

   private String name;

   @OneToOne
   private Wife wife;

}

@Entity
public class Wife implements Serializable {

   @Id
   private int id;

   private String name;

   @OneToOne(mappedBy="wife")
   private Husband husband;

}
Run Code Online (Sandbox Code Playgroud)
  1. 什么是Serializable广义的?
  2. 为什么类实现Serializable接口?
  3. 为什么单独的丈夫成员有@OnetoOne(mappedBy ="妻子"),但妻子成员没有@OnetoOne(mappedBy ="丈夫")

Swa*_*rma 10

  1. 从广义上讲,序列化是Java为开发人员提供的方式,可以将任何对象的状态持久化到持久性存储.

  2. 如果开发人员希望由于某种原因将其编码类的实例持久化到后备存储,则需要将该类声明为实现Serializable.

  3. 上述代码代表丈夫和妻子之间的一对一关系.这基本上意味着每个妻子都与一个丈夫有关,每个丈夫都与一个妻子有关.:-)同样在上述关系中,丈夫是[实体 - 关系条款]中的关系的主人,这就是为什么妻子说它是由丈夫映射/关联到丈夫而不是相反的方式.这意味着丈夫识别其妻子,而不是相反.


phi*_*hag 5

1)Serializable界面只是一个标记.这意味着对象可以被序列化,即它们可以表示为位串并从该位串恢复.

例如,您的两个类都是可序列化的,因为它们可以表示为位字符串(或常规字符串).另一方面,表示操作系统发出的文件句柄的类无法序列化:一旦程序完成,该句柄就会消失,并且无法将其恢复.无法保证按文件名重新打开文件,因为在此期间可能已删除/移动/更改了权限.

2)序列化未实现Serializable接口的对象将导致NotSerializableException被抛出.

3)根据文件:

mappedBy
此元素仅在关联的反向(非拥有)侧指定.