【问题标题】:Can Hibernate JPA objects be reliably serialized using default Java serialization?可以使用默认 Java 序列化可靠地序列化 Hibernate JPA 对象吗?
【发布时间】:2018-04-11 09:50:29
【问题描述】:

想象一下,我有一个典型的多表 RDBMS 架构和一个使用所有(或许多)各种 Hibernate 关系的复杂实体层次结构。将有集合类作为一些字段(集合、列表)来管理 Java 中的关系和循环引用。可能会有延迟加载,所以在幕后会有代理类。

然后我决定我想使用默认的 Java 序列化来序列化这个对象层次结构,并可能稍后将它反序列化回内存(假设回到同一个系统)。这是直截了当的,还是存在不起作用的陷阱和情况?例如,如果某些相关对象尚未延迟加载,是否会出现问题?

【问题讨论】:

  • 我不会序列化实体对象,也不会使用Java的序列化。使用更灵活的序列化机制对 DTO 进行序列化可为您提供更多的控制权,而减少“发生了什么?”时刻。

标签: java hibernate serialization


【解决方案1】:

我们在 ORM 中实例化实体对象以匹配数据库中的当前信息,这些对象往往严重依赖(如您所建议的)与数据库的实时(或可恢复:P)连接以恢复它的信息,每次一个。

为了避免这些问题,我建议您在尝试序列化信息之前急切地获取每个实体的完整信息。序列化机制取决于您,但如果尝试使用 Java 原生机制 (https://javajee.com/best-practices-for-serialization-in-java) 而不是更轻量级且更独立于实现的机制,您应该考虑很多事情。

无论如何,这只是个人意见,我认为您没有正确使用 ORM 提供的建议序列化实体对象的信息,因为它会在任意时刻创建数据库状态的任意快照,而这将来当您想将这些对象恢复到内存中时,可能会完全不准确。

【讨论】:

    猜你喜欢
    • 2012-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-22
    • 1970-01-01
    • 2011-03-05
    相关资源
    最近更新 更多