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

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

冯茂实
2023-03-14
问题内容

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

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

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

我使用Hibernate作为JPA实现。

我想知道:

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

问题答案:

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



 类似资料:
  • 问题内容: 什么时候应该实现接口? 我们为什么要这样做? 它具有任何优势或安全性吗? 问题答案: 从这是什么“系列化”的事情怎么一回事?: 它使您可以获取一个对象或一组对象,将它们放在磁盘上或通过有线或无线传输机制发送,然后稍后,也许在另一台计算机上,逆转该过程:恢复原始对象。基本机制是将一个或多个对象展平为一维比特流,并将该比特流转换回原始对象。 就像《星际迷航》中的“运输者”一样,所有事情都是

  • 问题内容: @Entity public class Husband implements Serializable { 广义上是什么? 类为什么实现接口? 为什么丈夫成员一个人只有@OnetoOne(mappedBy =“ Wife”),而妻子成员却没有@OnetoOne(mappedBy =“ husband”) 问题答案: 广义上讲,序列化是Java为开发人员提供的将任何对象的状态持久保存到

  • 我目前正在将我的数据库层(实体和DAO)从JavaEE迁移到Quakus(或者从wls迁移到OpenShift),并且不能完全理解一些细节: 目前我有目前的结构: 信息类注册时间。爪哇 我的测试类注册了TimeDaoTest,它使用TestDB在内存中执行以下操作: } 我一直潜伏在quarkus.io,读到以下内容: https://quarkus.io/guides/datasource ht

  • 重写Compariable接口的compareTo()方法的最佳方法是什么?此外,当我们可以编写自己的compareTo()方法而无需实现时,为什么还要实现可比较的接口呢。以以下座椅类别为例: 尽管我们没有实现可比接口,但上述工作仍然有效,那么我们为什么要实现它呢?

  • 问题内容: 在我对Servlet的理解中,该Servlet将由Container实例化,其方法将被调用一次,并且Servlet将像单例一样存活,直到JVM关闭。 我不希望我的servlet被序列化,因为当应用服务器恢复或正常启动时,它将被重新构造。Servlet不应该包含特定于会话的成员,因此将其写入磁盘并重新实例化是没有意义的。有实际用途吗? 我担心的是,我在其中放置了一些不可序列化的字段,然后

  • 我的quarkus概念验证中的JPA实体出现错误。 我发现了这个帖子: 如何在Quarkus中为外部模块中的类创建Jandex索引 我按照SOF的回答做了,这也在日志中: 一个空的META-INF/beans。xml 但我还是收到了上面的警告。 我真正想要的是: 我如何明确地告诉quarkus我的JPA实体的位置。 我的主要目标是减少启动时间,所以我尽量避免(过度)扫描。 我使用的是Gradle,