Что содержит java.sql.Blob? - PullRequest
       1

Что содержит java.sql.Blob?

0 голосов
/ 19 октября 2018

Из документа написано:

По умолчанию драйверы реализуют Blob с использованием локатора SQL (BLOB), что означает, что объект Blob содержит логический указатель на данные SQL BLOB, а не на данныесам по себе.

Поэтому, если я получаю объект Blob из БД, я получаю не все байты данных, а только поток, такой же, как InputStream, в файл в файловой системе (правильномне, если я ошибаюсь).

Но что теперь, если я сам создаю Blob из конструктора, например, с помощью Lobhelper Hibernate?

Есть:

  • createBlob (byte [] bytes)
  • createBlob (поток InputStream, длинная длина)

Что такоесвойства Blob, которые я получаю от обоих этих конструкторов?Будут ли данные прямо внутри объекта Blob или будут настроены потоки?

Ответы [ 2 ]

0 голосов
/ 19 октября 2018

org.hibernate.engine.jdbc.NonContextualLobCreator класс отвечает за создание BLOB-объектов в спящем режиме и использует org.hibernate.engine.jdbc.BlobProxy, который фактически использует:

  • BinaryStreamImpl используется для createBlob(byte[] bytes) и определяется следующим образом: BinaryStreamImpl extends ByteArrayInputStream implements BinaryStream BinaryStreamImpl использует ByteArrayInputStream для хранения ссылки на ваш массив.
  • StreamBackedBinaryStreamиспользуется для createBlob(InputStream stream, long length) и определяется следующим образом: StreamBackedBinaryStream implements Stream StreamBackedBinaryStream содержит ссылку на ваш поток.

Итак, проверьте ссылки на исходный код, чтобы лучше понять, что происходитза кадром.

0 голосов
/ 19 октября 2018

Объект Blob в Java - это отображение объекта Blob (Большой двоичный объект в Sql. Методы в ResultSet, CallableStatement и PreparedStatement могут использоваться в объектах Blob. JDBC API позволяет использовать Blob так же, как int с intтакие методы, как getBlob и setBlob (такие же, как getInt и setInt).

Существуют определенные ограничения на Blob:

  1. Оператор равенства (или неравенства) не может использоваться
  2. OrderBy, Distinct и GroupBy не могут использоваться.

Хранение целого числа в Blob поэтому не рекомендуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...