【问题标题】:Serializing a java Map to a db将 java Map 序列化到数据库
【发布时间】:2008-12-15 22:28:59
【问题描述】:

我正在使用 jdbc 来处理我的数据库。 我想将 HashMap 直接存储在数据库 oracle 中。 我想我需要序列化地图及其内容,它们只是字符串。 Map 已经实现了 Serializeable,但我的问题是如何使用 jdbc 将 Map 放入 SQL 中? 例如,我有一个 jdbcTemplate.update("insert into ....", new Object[]{....}, new int[]{....}) 我只是把地图放在对象数组中吗? 谢谢

【问题讨论】:

    标签: serialization


    【解决方案1】:

    您需要一个包含键/值列的表,如果您要存储多个映射,则需要一个标识列(或另一个表的外键,其中包含哈希映射所属的数据)。

    然后在JDBC中,创建一个prepared statement(插入myhashmap (id, foreign_id, key, val) values (?, ?, ?, ?))ONCE,然后遍历hashmap中的每个元素,设置参数在语句上并在查询上调用执行。

    (抱歉,附近没有任何发布代码 sn-ps 的代码,也不想输入错误的示例)。

    这也可以简单地扩展到 String -> Object 的映射,您希望将每个字段存储在 DB 中的 Object 中。即,它基本上就像数据库中的标准表和“键”列。列表类似,但有一个“排名”列来指示排序。

    【讨论】:

    • 这是一种比 BLOB 方法更好的方法,因为您将能够读取和处理数据库中的数据,而不仅仅是在 Java 应用程序中。在 Java 版本之间,Java 库的 versionID 会发生变化,因此您的序列化可能不适用于新旧版本的 Java。
    【解决方案2】:

    我过去的做法是在表中创建一列来存储您的序列化对象。数据类型应为“blob”或 Oracle 中的等价物。

    然后可以使用 ResultSet.setBytes() 和 ResultSet.getBytes() 写入/检索

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-09
      • 2019-02-25
      • 2011-04-26
      • 2018-03-28
      • 2012-11-11
      • 1970-01-01
      • 2014-02-24
      • 1970-01-01
      相关资源
      最近更新 更多