首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在java中序列化Jdbc4SQLXML类

如何在java中序列化Jdbc4SQLXML类
EN

Stack Overflow用户
提问于 2014-02-24 21:40:01
回答 2查看 359关注 0票数 1

我只想知道我们如何“序列化”Jdbc4SQLXML类,它扩展了java.lang.Object并按照postgres API实现了java.sql.SQLXML。即使SQLXML接口也没有扩展Serializable接口。

我这样做的原因是,我试图从其他JVM中获取一个对象,而此时我得到了这个异常。[中英文] java.io.NotSerializableException: org.postgresql.jdbc4.Jdbc4SQLXML.

这里SQLXML是我的返回类型。

提前谢谢。

EN

回答 2

Stack Overflow用户

发布于 2014-02-25 12:16:05

Jdbc4SQLXML是不可序列化的,因为它实现的接口是不可序列化的,规范并不需要它。这是有充分理由的: JDBC的SQL/XML支持被允许是“惰性的”,其中SQL/XML结果的JDBC对象实际上只是指向数据库中数据的指针,并且它是按需获取的。这也是结果集关闭后结果对象无效的原因。

因此,虽然PgJDBC可以使这个对象可序列化,因为它不会延迟加载,但这意味着我们以后永远不能将其更改为延迟加载。

如果要序列化XML,请使用标准的SQL/XML方法从结果对象中读取XML并序列化结果XML。不要试图直接序列化JDBC结果对象。

参见the JDBC tutorial。您将在这里看到如何从结果对象中获取DocumentDocument是可序列化的。

票数 2
EN

Stack Overflow用户

发布于 2014-02-24 22:39:35

如果一个类没有实现可序列化,你就不能通过常规的api发送它。您可以使用自己的序列化程序(它使用getter/setters或Java反射进入其他非公共字段);然后通过web服务器发送字符串,然后在另一端执行相反的操作。基本上是你自己的序列化。但是也有一些包可以提供帮助,比如http://x-stream.github.io/ Java7也有内置的帮助程序

重要的问题可能是你为什么要这样做?如果在JVM1中打开了一些资源,那么这个对象在JVM2中可能会失败。

为什么不制作自己的POJO并使用它来重新创建对象呢?

这也将在未来版本中的变化情况下保护-如果这个第三方对象中的某些东西发生了变化,这并不意味着序列化。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21989488

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档