我一直在面对这个问题,序列化上的hibernate对象产生了包含来自Hibernate的所有检测代码的意外xmls.
在序列化对象之前,我们对对象进行了一些清理.
但是,是否有可用于直接序列化对象的标准选项?
我以前没有使用过 XStream,但我已经序列化了 Hibernate 管理的实体。这并不有趣。
有两个大问题:
前者很明显 - 您需要实际数据来序列化。后者则不然 - 您针对集合接口声明的任何一对多关系(例如:)都Set<T>将被 Hibernate 自己的(不可序列化!)集合实现插入。这很可能就是 Hibernate 的类渗透到您的对象中的地方。
我最终编写了反射代码(实际上是内省的)来做到这一点:
请注意,第 2 步很重要 - 如果您在关闭会话之前替换集合,Hibernate 将在关闭时立即放回自己的集合...
编辑: @cliff.meyers 发现了我忘记提及的实现细节:如果这样做,您需要将对象图仅限制到您自己的实体,并监视循环引用路径(例如:通过缓存对您的对象的引用)已经走了)。
| 归档时间: |
|
| 查看次数: |
6758 次 |
| 最近记录: |