У меня есть определенный POJO, который необходимо сохранить в базе данных, текущий дизайн определяет его поле как однострочный столбец, и добавление дополнительных полей в таблицу не вариант.
Не могли бы вы создать новую таблицу и вставить внешний ключ в этот столбец!?!? :)
Я подозреваю, что нет, но давайте рассмотрим все основы!
Сериализация:
Недавно мы провели это обсуждение, чтобы в случае сбоя нашего приложения мы могли воскресить его в том же состоянии, что и ранее. Мы по существу отправляем событие персистентности в очередь, а затем это захватывает объект, блокирует его и затем сериализует его. Это кажется довольно быстрым. Сколько данных вы сериализуете? Можете ли вы сделать какие-либо переменные (то есть, кэшированные переменные) Можете ли вы рассмотреть возможность разделения вашей сериализации?
Осторожно: что произойдет, если ваши объекты изменятся (блокировка) или классы изменятся (другой идентификатор сериализации)? Вам нужно обновить все, что сериализовано, до последних классов. Возможно, вам нужно хранить это только на ночь, чтобы это не имело значения?
XML:
Вы можете использовать что-то вроде xstream для достижения этой цели. Создание чего-то нестандартного выполнимо (хороший вопрос для интервью!), Но я бы, наверное, не сделал это сам. Зачем беспокоиться? Помните, если у вас есть циклические ссылки или если у вас есть ссылки на объекты более одного раза. Восстановление объектов не так тривиально.
Хранилище базы данных:
Если вы используете Oracle 10g для хранения больших двоичных объектов, обновитесь до последней версии, поскольку производительность c / blob значительно возросла. Если мы говорим о больших объемах данных, то, возможно, сжатый поток данных?
Это приложение в реальном времени, или будут две или две паузы, где вы можете безопасно сохранить реальный объект? Если у вас есть время, вы можете его клонировать, а затем сохранить клон в другом потоке. Для чего настойчивость? Это важно, что это сделано внутри транзакции?