Десериализация объекта из базы данных (Java / Hibernate) - PullRequest
0 голосов
/ 26 апреля 2011

У меня есть база данных MS 2000, которая используется нашим основным приложением Java. У этого приложения есть класс (давайте назовем его 'car'), который сериализуется и помещается в базу данных, используя Hibernate3 как отдельное поле в таблице. Он имеет настройки по умолчанию в Hibernate и просто имеет атрибут serialize в файле отображения .hbm.xml. Насколько я могу сказать. Он находится в другом проекте, над которым я не работаю, поэтому я не знаю его слишком близко, но могу получить исходный код. В любом случае, я работаю над вторым проектом, который должен прочитать / использовать эти сериализованные данные из базы данных. Как я могу десериализовать его из другого приложения, которое не использует Hibernate? Я хочу знать, как сделать это с помощью POJO, чтобы получить доступ к атрибутам и данным класса автомобиля? Есть ли что-то особенное, что нужно сделать, поскольку Hibernate в настоящее время является процессом, с помощью которого он сериализуется? Или я могу просто выбросить возвращенный набор данных в байтовый массив и преобразовать его в car - при условии, что мой класс car идентичен исходному коду с классом car другого java-приложения, которое его сериализовало? ТИА

Ответы [ 2 ]

1 голос
/ 26 апреля 2011

Вам потребуется использовать java.io.ObjectInputStream () для чтения сериализованных байтовых данных из базы данных. Еще одна важная вещь - это наличие файлов классов (например, jar-файлов или .class-файлов) в пути к классам, которые соответствуют тем же версиям объектов, которые хранятся в базе данных.

Если вы пытаетесь это сделать и получаете ошибки, вы должны либо отредактировать текущее сообщение, чтобы предоставить код и сообщения об ошибках, либо опубликовать новый вопрос, чтобы решить любую конкретную проблему, с которой вы столкнулись при десериализации данных.

0 голосов
/ 26 апреля 2011

Я не вижу причин, почему то, что вы предложили, не сработало бы.

Однако, это похоже на хакерский и хрупкий подход. Действительно, использование сериализации / десериализации Java по своей природе хрупко ... если вам когда-либо понадобится изменить закрытие сериализуемых классов.

...