【问题标题】:What is Serializable? What does this mean? [duplicate]什么是可序列化?这是什么意思? [复制]
【发布时间】:2011-04-14 18:46:54
【问题描述】:

可能的重复:
Do Hibernate table classes need to be Serializable?
What does Serializable mean?

public class ExampleEntity implements Serializable
{
     @Id
     private long id;
     private int fieldInt;
     private long fieldLong;
     private String fieldString;
 }

我正在学习 JPA 教程。我能够理解基本概念,但是在他们添加的所有教程中,这是可序列化的。这样做的目的是什么?这对我有什么帮助? 有什么建议吗?

【问题讨论】:

  • 这可能是 Do Hibernate table classes need to be Serializable? 的欺骗,或者,如果不是 Hibernate/JPA 特定问题,则可能是 What is object serialization? 的欺骗。在这两种情况下,都是骗子:)
  • 我编辑了标签。删除了“jpa”和“hibernate”并添加了“序列化”。
  • @pascal :对不起,我是新手。我现在正在学习。我以后肯定会避免这种情况。
  • @Code 哦,别担心,没问题。只是答案已经存在,在这种情况下,做法是关闭问题(作为重复)以避免信息稀释。但是先做一点搜索是个好主意:)
  • @pascal 感谢您的关注及其正确性。你们都帮助我们成长。谢谢

标签: java serialization


【解决方案1】:

表示类可以序列化。这意味着它可以转换为 0 和 1 的流并发送到其他服务,如 web 服务或 ORM(休眠)或其他。然后这个服务知道如何存储流。

此外,您的程序可以接收序列化的类并从 0 和 1 的流中为其创建一个实例。

这是“保存”类实例并在任何其他时间“恢复”它们的方式。

更多信息在

要使类可序列化,您必须实现接口“Serializable”。

  • 为什么会这样?因为当序列化类的时刻到来时,会调用函数writeObtject将对象转换为字节。另一方面,当您有字节并且想要获取类的实例时,将调用函数readObject

  • 为什么不是自动的?一个变量值,它已经用字节表示。因为问题来了,例如当一个类包含其他类的实例时。你做什么工作?你也序列化其他类?你只保留参考地址?它非常复杂,可能取决于您的项目类型和设计。

【讨论】:

  • @pokore 谢谢我理解得很好。还有这个@GeneratedValue(strategy=GenerationType.AUTO) 是什么意思?是为了ID的自动递增吗?
  • @weed :-) 这是一个完全不同的问题
  • 为了进一步澄清,接口的重点是标记可以合理序列化的类。例如,序列化实时网络套接字是没有意义的,因此它没有被标记为可序列化。
  • @Code 'n' 杂草。这是一个不同的问题,但无论如何我都会回答。使用该注释,您将告诉您的 JPA 实体(通常是 Hibernate)您让它自动生成 id。例如,当您创建Image.class 类的实例时,它很有用。但在其他情况下,您可能希望自己生成 id,例如在 User.class 中,其中 id 可以是用户名。
  • @Code 'N'Weed,我向您推荐 Christian Bauer 和 Gaving King 所著的《Java Persistence with Hibernate》一书。许多人认为这是休眠的圣经。
【解决方案2】:

可序列化的类可以序列化 - 转换为字节以存储在硬盘上或通过网络传输。

【讨论】:

  • @fridley 谢谢你的解释。
  • 你的字节是指例如 XML 文件吗?
猜你喜欢
  • 2016-02-06
  • 2011-03-26
  • 1970-01-01
  • 2015-03-12
  • 1970-01-01
  • 2012-10-26
相关资源
最近更新 更多