将对象序列化为数据库

时间:2013-08-18 17:18:49

标签: java

我知道我们可以在FileOutputstream ObjectoutputStream FileInputStreamObjectInputStream包裹ObjectOutputstream.writeObject,并使用ObjectInputstream.readobject()setObject()方法将Java对象序列化为一份文件。

如果我想将对象序列化为数据库而不是文件,那么我需要做的就是调用PreparedStatement getObject()方法来编写对象ResultSet { {1}}检索对象。

如果我们尝试序列化的对象的类没有实现Serializable接口,那么在将对象序列化为文件的情况下,我们将获得NotSerializableException

但是,如果将对象序列化为DB,因为我们根本不使用writeObject但只使用PreparedStatement setObject方法,因此如果类不是Serializable,JVM将抛出任何异常。

这是否意味着在将对象序列化到数据库时,没有必要实现Serializable接口?

3 个答案:

答案 0 :(得分:0)

不,您仍然必须实现Serializable,因为JDBC库会尝试调用writeObject

另一方面,我不确定将整个对象序列化到数据库中是否能够很好地运行。

答案 1 :(得分:0)

据我所知setObject()将serialize对象作为输入,get对象也返回java.io.Serializable类型。

void setObject(java.io.Serializable object)

java.io.Serializable getObject()

答案 2 :(得分:0)

我查看了Mysql jdbc preparedStatement的源代码。以下是链接: http://www.docjar.com/html/api/com/mysql/jdbc/PreparedStatement.java.html

我发现在setObject()方法中调用setSerializableObject方法,该方法最终调用ObjectOutputStream的writeObject()方法。此方法也在SQLException中包装异常,因此我猜如果该对象不可序列化,我们将得到一个SQLException。