当前位置: 首页 > 面试题库 >

java:为什么ResultSet无法序列化?

穆建华
2023-03-14
问题内容

经过数小时的搜索,我终于意识到java.sql.ResultSet无法序列化,也没有办法。我尝试添加到列表中,作为Serializable对象和其他内容中的实例变量,但事实证明这只是幼稚而绝望的尝试。我试图使用的实现的RowSet像对CachedRowSetImpl是序列化,但它们增加了响应时间,最有可能是因为他们迭代ResultSet中。最重要的是,除非选择迭代ResultSet,否则您将无法通过网络发送其中包含的数据。

我知道必须迭代并将内容添加到数据模型对象和列表中的替代方法,但是我非常想知道其背后的原因是什么?当时的Java开发人员在想什么?


问题答案:

据我所知,ResultSet并不“包含”数据。如果调用http://docs.oracle.com/javase/7/docs/api/java/sql/ResultSet.html#next(),则ResultSet将从底层(JDBC)连接到数据库的数据获取。

如果ResultSet被序列化并传输到另一台计算机,则这将是不可能的。那里连接将不可用。



 类似资料:
  • 我有以下设置: ValidationResults类序列化后,我收到以下错误: 我使用play.libs.Json实用程序类,它只是Jackson对象映射器的包装器。有人知道问题是什么吗?我如何解决这个问题? ValidationError类的结构如下:

  • 除非缓存放入是内部的,否则此代码路径中不会发生缓存放入。我提到这一点是因为另一篇文章的评论,即“未知对”可能是由错误类型的缓存放置造成的。 我正专注于 未能反序列化对象[typename=org.apache.ignite.internal.processors.closure.gridclosureprocessor$C2]

  • 问题内容: 该程序在Java 7中(或在Java 8中带有)可以很好地编译,但是在Java 8中无法编译: 结果: 换句话说,这是Java 7和8之间的 反向 源不兼容。我已经遍历了Java SE 8和Java SE 7 列表之间的不兼容性,但是没有找到任何适合我的问题的东西。 那么,这是一个错误吗? 环境: 问题答案: 感谢您的报告。这看起来像个错误。我会照顾好它,并且一旦我们有更多关于为什么发

  • 问题内容: 我的豆子看起来像这样: 当我使用以下代码序列化bean时: 我得到这样的结果: 但 根据JacksonFeatureUnwrapping文档中的说明。为什么我没有得到解包结果? 问题答案: 不适用于地图,仅适用于具有getter和setter的正确POJO。对于地图,应使用和(在杰克逊版本> = 1.6中可用)。 在您的情况下,请尝试以下操作: 这样,您还可以直接向地图添加属性,例如将

  • 问题内容: Java Bean是否必须实现接口? 问题答案: 这是Javabeans规范中描述的“典型”功能之一。 这是第 2.1 章的摘录 什么是bean? 各个Java Bean支持的功能会有所不同,但是区分Java Bean的典型统一功能是: 支持“自省”,以便构建器工具可以分析bean的工作方式 支持“自定义”,以便在使用应用程序构建器时,用户可以自定义Bean的外观和行为。 支持“事件”

  • 序列化就是一种用来处理对象流的机制。将对象的内容流化,将流化后的对象传输于网络之间。 序列化是通过实现serializable接口,该接口没有需要实现的方法,implement Serializable只是为了标注该对象是可被序列化的,使用一个输出流(FileOutputStream)来构造一个ObjectOutputStream对象,接着使用ObjectOutputStream对象的writeO