Определенно не используйте java.io.Serializable
. Просто запишите двоичные данные как есть для своей цели. Сериализация только добавит ненужные издержки и сделает сохраненные данные непригодными для других инструментов, кроме Java.
Я бы тоже не вставил все это в одно поле в одном ряду. Это делает все это тесно связанным, и хранение / извлечение отдельных записей может быть более дорогим. Скорее храните каждый в своем собственном ряду. При необходимости вы можете связать / ссылаться на один и другой столбец с помощью внешнего ключа.
Теперь код Java, API JDBC предлагает PreparedStatement#setBinaryStream()
для сохранения двоичных данных в виде InputStream
в базе данных. Существует также метод setBytes()
для случая, когда он используется (перегрузка памяти) byte[]
. Затем, чтобы получить его, вы можете просто использовать ResultSet#getBinaryStream()
или getBytes()
.
С другой стороны, вы также можете просто сохранить эти файлы в файловой системе локального диска обычным способом ввода-вывода Java, используя FileOutputStream
, и прочитать их, используя FileInputStream
. При необходимости вы можете хранить пути / имена файлов в базе данных. Это отделяет двоичные данные от базы данных, что делает их менее переносимыми, но более пригодными для повторного использования для других целей.
Смотри также