2013-08-18 34 views
-2

我知道我们可以在ObjectInputStream包裹在ObjectoutputStreamFileOutputstreamFileInputStream和使用和ObjectInputstream.readobject()方法Java对象序列到一个文件中。序列化对象数据库

如果不是一个文件,我想将对象序列化到数据库,然后所有我需要做的就是调用PreparedStatementsetObject()方法写的对象和ResultSetgetObject()检索对象。

如果我们试图序列化对象的类没有实现Serializable接口,那么在序列化对象到文件,我们会因为我们序列化对象到数据库的情况下获得NotSerializableException

不过的情况下,根本不使用writeObject,而只是使用PreparedStatement setObject方法,所以如果class不是Serializable,那么JVM将抛出任何异常。

那么这是否意味着在将对象序列化到数据库时不需要实现Serializable接口?

回答

0

不,您必须仍然执行Serializable,因为JDBC库会尝试呼叫writeObject

在附注上,我不确定是否将整个对象序列化到数据库中始终运作良好。

0

据我所知setObject()以序列化对象作为输入,得到对象也返回java.io.Serializable类型。

void setObject(java.io.Serializable object)

java.io.Serializable getObject()

0

我看着MySQL的JDBC preparedStatement.Following的源代码是链路: http://www.docjar.com/html/api/com/mysql/jdbc/PreparedStatement.java.html

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