Java:序列化是否还编写方法代码以流式传输 Hibernate 实体?

标签 java hibernate serialization pojo

作为一个实验,我通过“load”获取了一个 Hibernate 实体 pojo,并通过正常的序列化将其写入文件。我通过正常的反序列化再次通过单独的程序读取该文件,然后使用反射查找实体对象的代理类包含的字段和方法。

令我惊讶的是,它向我显示了代理类中的所有方法(例如“getHibernateLazyInitializer()”或“CGLIB$SET_THREAD_CALLBACKS(net.sf.cglib.proxy.Callback[])”等)

更重要的是,我能够在反序列化实例上调用“getHibernateLazyInitializer()”方法!现在,如果代理代码是动态生成的,并且如果创建该类的 JVM 关闭后该类不存在,那么我如何调用该方法呢? Hibernate pojo 的方法字节码是否也通过其代理进行序列化/反序列化?

最佳答案

不,事实并非如此。如果您尝试在 Java 进程中反序列化一个对象,而类路径不知道该类,则会出现错误。

关于Java:序列化是否还编写方法代码以流式传输 Hibernate 实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10024109/

相关文章:

c# - 如何读取 C# 字符串字典并将其写入文件?

java - 无法使用 Java PreparedStatement 在 MySQL 中存储 UTF-8 内容

java - 如何导入其他项目以在我的代码中使用(颜色选择器)

java - hibernate 条件 : Perform JOIN in Subquery/DetachedCriteria

c++ - Boost C++ 序列化开销

java - OutputStream 与 ByteArrayOutputStream 不写入

java - 如何将字段索引为建议类型?

java - Android:制作 2 个 RecyclerView 还是 2 个 Adapter 更聪明?

java - JPA 中@AttributeOverride 和@AssociationOverride 的区别

hibernate - 在 SLSB 中使用 EJB3 和实体管理器处理 ConstraintViolationException 的最佳方法是什么