作为一个实验,我通过“加载”获取了一个 Hibernate 实体 pojo,并通过正常的序列化将其写入文件。我通过正常的反序列化再次通过单独的程序读取该文件,然后使用反射查找实体对象的代理类包含的字段和方法。
令我惊讶的是,它向我展示了代理类中包含的所有方法(例如,'getHibernateLazyInitializer()' 或 'CGLIB$SET_THREAD_CALLBACKS(net.sf.cglib.proxy.Callback[])' 等)
更重要的是,我能够在反序列化实例上调用“getHibernateLazyInitializer()”方法!现在,如果代理代码是动态生成的,并且如果在创建它的 JVM 关闭后该类不存在,我怎么能调用该方法?方法字节码是否也通过它们的代理为 Hibernate pojo 序列化/反序列化?