gpt4 book ai didi

java - 为什么hibernate在session.get方法中强制序列化

转载 作者:搜寻专家 更新时间:2023-10-31 19:50:39 26 4
gpt4 key购买 nike

我看到 hibernate 的 session.get() 和 load() 方法只接受可序列化的对象。

根据我对hibernate的理解,它会生成一条SQL语句并将其发送到DBMS。它永远不需要通过网络发送 java 对象。

为什么 hibernate 会强制我们进行序列化?

最佳答案

首先,Hibernate 在某些签名中使用 Serializable 的事实并不意味着 Hibernate 序列化任何东西,它只是意味着参数在需要时是可序列化的出现。

然后,我找不到绝对引用,但我认为最有力的论据是:

  • 实体 ID 用作缓存的键(第一级、第二级)并且可以通过网络发送

一些较弱的论点(或根本不是论点):

  • Session 本身可以被序列化(例如存储在 HttpSession 中)
  • Hibernate 需要 entityId 的父类(super class)型(包括复合 PK)

考虑到所有这些,我认为强制 API 用户传递一个 Serializable entityId 是有意义的,这允许不关闭任何门并避免任何以后的限制(哎呀,你可以' t 激活二级缓存,因为此 pk 不是 Serializable)。这是 IMO 比使用 Object 更好的设计决策。老实说,我没有看到任何烦恼。

关于java - 为什么hibernate在session.get方法中强制序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3012660/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com