-2

我知道我们可以包装FileOutputstreamin ObjectoutputStreamFileInputStreamin和ObjectInputStreamuse方法来将 Java 对象序列化到文件中。ObjectOutputstream.writeObjectObjectInputstream.readobject()

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

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

但是,在将对象序列化到 DB 的情况下,因为我们根本不使用writeObject而只是使用PreparedStatement setObject方法,所以如果类不是,JVM 将抛出任何异常Serializable

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

4

3 回答 3

0

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

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

于 2013-08-18T17:46:19.800 回答
0

No, you must still implement Serializable since the JDBC library would attempt to call writeObject.

On a side note, I'm not sure if serializing the whole object into database works well all the time.

于 2013-08-18T17:23:49.287 回答
0

As far as i know setObject() takes serialize object as input and get object also returns java.io.Serializabletype.

void setObject(java.io.Serializable object)

java.io.Serializable getObject()

于 2013-08-18T17:26:45.343 回答