一尘不染

JPA实体何时以及为何应实现Serializable接口?

java

问题在标题中。下面我仅描述了我的一些想法和发现。

当我有一个非常简单的域模型(3个表没有任何关系)时,我所有的实体都没有实现Serializable。

但是,当域模型变得更加复杂时,我遇到了RuntimeException,它表示我的实体之一未实现Serializable。

我使用Hibernate作为JPA实现。

我想知道:

  1. 它是特定于供应商的要求/行为吗?
  2. 我的可序列化实体会怎样?它们应该可序列化用于存储或传输吗?
  3. 何时需要使我的实体可序列化?

阅读 427

收藏
2020-03-18

共2个答案

一尘不染

如果混合使用HQL和本机SQL查询,通常会发生这种情况。在HQL中,Hibernate将你传入的类型映射到数据库可以理解的任何类型。运行本机SQL时,必须自己进行映射。如果不这样做,则默认映射是序列化参数并将其发送到数据库(以希望它能理解它)。

2020-03-18
一尘不染

如果要通过值将实体实例作为独立对象(例如,通过远程接口)传递,则实体类必须实现Serializable接口。

2020-03-18