【问题标题】:JAXB Object to ClobJAXB 对象到 Clob
【发布时间】:2014-03-16 20:44:26
【问题描述】:

如何为 Clob 创建 jaxb 对象。当我尝试以下不可序列化的错误时。

public static void createClob(TestTo testTo){
        PreparedStatement pst  = null;
        Connection con = null;
        //Clob studentListClob = null;                  

        try {
            con = openOASDBcon(false);
            pst  = con.prepareCall(INSERT_Clob);
            pst.setBytes(1, getByteArrayObject(testTo));
            pst.setString(2, "");
            pst.executeUpdate();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            close(con, pst);
        }
    }


private static byte[] getByteArrayObject(TestTo testTo){

           byte[] byteArrayObject = null;
           try {

                ByteArrayOutputStream bos = new ByteArrayOutputStream();
                ObjectOutputStream oos = new ObjectOutputStream(bos);
                oos.writeObject(testTo);

                oos.close();
                bos.close();
                byteArrayObject = bos.toByteArray();
            } catch (Exception e) {
                e.printStackTrace();
                return byteArrayObject;
            }
            return byteArrayObject;
        }

无法实现可序列化。有没有最好的方法来实现 jaxb 对象到 clob。

【问题讨论】:

  • 您似乎在问如何让 JAXB 创建可序列化的类。如果是这种情况,请参阅stackoverflow.com/questions/1513972/…
  • 不仅可序列化。我想将 jaxb 对象转换为 clob。有什么办法吗?
  • @Rob。有什么办法吗

标签: java xml jaxb clob


【解决方案1】:

有几种方法可以将 JAXB 对象粘贴到数据库中的 CLOB(或 BLOB)列中。我认为您必须执行一些自定义插入和选择逻辑才能将 JAXB 对象放入列中 - 正常的 ORM 模型将是每个对象一行,对象的每个字段一列(例如,如果您使用休眠)。

选项 1:配置 xjc 以生成可序列化的 JAXB 类 (How to generate a Java class which implements Serializable interface from xsd using JAXB?)。然后使用 Serializable 接口从 clob/blob 的输入/输出流中读取/写入对象。这会将 Java 对象表示形式存储在数据库中。

选项 2:使用 JAXB 提供的 XML 编组/解组路径以 XML 文本形式读取/写入对象的状态。这会将对象的 XML 表示形式存储在数据库中。

我个人会选择选项 2 - XML 表示。我认为管理 XSD 中的更改并确保您可以读取旧对象更容易,而不必处理 Java 的串行版本 ID。此外,您可能需要考虑在将 XML 放入 CLOB 之前对其进行压缩(请参阅Compressing and decompressing streams)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-28
    • 2015-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多