2013-08-18 3 views
-2

Я знаю, что мы можем обернуть FileOutputstream в ObjectoutputStream, FileInputStream в ObjectInputStream и использовать и ObjectInputstream.readobject() методы для сериализации Java объектов в файл.Сериализация объекта в базу данных

Если вместо файла я хочу сериализовать объект в базу данных, то все, что нужно будет сделать, это вызвать setObject() метод PreparedStatement писать объект и getObject() из ResultSet для извлечения объекта.

Если класс для объекта мы пытаемся сериализации не реализован интерфейс Serializable то в случае сериализации объекта в файл мы получим NotSerializableException

Однако в случае сериализации объекта в БД, так как мы вообще не используются writeObject, но просто используют метод PreparedStatement setObject, поэтому JVM будет генерировать любое исключение, если класс не Serializable.

Значит ли это, что при сериализации объекта в базу данных нет необходимости реализовывать интерфейс 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, который наконец вызывает метод writeObject() объекта ObjectOutputStream. Также этот метод обертывает исключение в SQLException, поэтому я предполагаю, что если объект не является сериализуемым, мы получим SQLException.