【问题标题】:Difference between Serialization and saving an object via JDBC to JAVA_OBJECT序列化和通过 JDBC 将对象保存到 JAVA_OBJECT 之间的区别
【发布时间】:2013-08-19 20:16:58
【问题描述】:

我知道序列化是什么,但是我还没有找到任何描述后者的实际示例(利用 JAVA_OBJECT 映射将对象保存在数据库中)。 我是否必须先序列化对象然后将其保存到数据库中?

【问题讨论】:

  • 感谢投票者的反馈,但请随时表达你为什么保留这样。

标签: java mysql database jdbc


【解决方案1】:

序列化用于保存对象的状态并将其编组到流中并与远程进程共享。其他进程只需要具有相同的类版本即可将流反序列化回对象。

数据库方法的问题是您甚至需要将数据库公开给远程进程。由于各种原因,主要是安全性,通常不会这样做。

【讨论】:

  • 我的意思是如何保存 JAVA_OBJECT?
【解决方案2】:

在 MySQL 的情况下,您不必先序列化对象,驱动程序会为您完成。只需使用PreparedStatement.setObject 方法即可。

例如,首先在 MySQL 中创建表:

create table blobs (b blob);

然后在Java程序中创建一个prepared statement,设置参数,然后执行:

    PreparedStatement preps;
    preps = connection.prepareStatement("insert into blobs (b) values (?)");
    preps.setObject(1, new CustomObject());
    preps.execute();

别忘了你要存储的对象的类必须实现Serializable接口。

【讨论】:

  • 不过,我明白了,java.sql.types.JAVA_OBJECT 什么时候来玩?
  • 按照您的描述,我使用的是 blob 而不是 JAVA_OBJECT 字段;转换是这样的 (JDBC) JAVA_OBJECT 到 (Java) 底层 Java 类
  • MySQL 没有 JAVA_OBJECT 列类型。你不使用 MySQL 吗?它也不支持Types.JAVA_OBJECT 值。
  • 好吧,老实说,我正在为 OCPJP7 学习,我正在寻找与 JDBC 相关的任何可能的棘手问题。所以假设 mysql 有 JAVA_OBJECT ......我是否必须对其进行序列化首先还是它只是将对象作为名称让我们预见?
  • 不过,非常感谢您抽出宝贵时间,这正是我想要的
猜你喜欢
  • 2015-02-14
  • 2019-11-17
  • 1970-01-01
  • 2014-09-08
  • 1970-01-01
  • 2012-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多