Spec-Zone.ru › OpenJDK 8

Пакет javax.sql

Предоставляет API для доступа к источникам данных и обработки данных на стороне сервера из языка программирования JavaTM.

См.: Описание

Интерфейс Описание
CommonDataSource

Интерфейс, определяющий методы, общие для DataSource, XADataSource и ConnectionPoolDataSource.

ConnectionEventListener

Объект, который регистрируется для получения уведомлений о событиях, генерируемых объектом PooledConnection.

ConnectionPoolDataSource

Фабрика для объектов PooledConnection.

DataSource

Фабрика для подключений к физическому источнику данных, который представляет этот объект DataSource.

PooledConnection

Объект, предоставляющий средства для управления пулом подключений.

RowSet

Интерфейс, добавляющий поддержку модели компонентов JavaBeans™ в API JDBC.

RowSetInternal

Интерфейс, который реализует объект RowSet, чтобы представить себя объекту RowSetReader или RowSetWriter.

RowSetListener

Интерфейс, который должен быть реализован компонентом, желающим получать уведомления о значимых событиях в жизни объекта RowSet.

RowSetMetaData

Объект, содержащий информацию о столбцах в объекте RowSet.

RowSetReader

Средство, которое использует объект RowSet (отключенного объекта) для заполнения его данными из строк.

RowSetWriter

Объект, реализующий интерфейс RowSetWriter, называемый писателем.

StatementEventListener

Объект, регистрируемый для получения уведомлений о событиях, происходящих в PreparedStatements, находящихся в пуле Statement.

XAConnection

Объект, обеспечивающий поддержку распределенных транзакций.

XADataSource

Фабрика для объектов XAConnection, используемых внутри.

Класс Описание
ConnectionEvent

Объект Event, предоставляющий информацию об источнике события, связанного с подключением.

RowSetEvent

Объект Event, генерируемый при возникновении события с объектом RowSet.

StatementEvent

Объект StatementEvent отправляется всем объектам StatementEventListener, которые были зарегистрированы в PooledConnection.

Описание пакета javax.sql

Предоставляет API для доступа к источникам данных и обработки данных на стороне сервера из языка программирования JavaTM. Этот пакет дополняет пакет java.sql и, начиная с версии 1.4, включен в Java Platform, Standard Edition (Java SETM). Он остаётся неотъемлемой частью Java Platform, Enterprise Edition (Java EETM).

Пакет javax.sql предоставляет следующее:

  1. Интерфейс DataSource в качестве альтернативы DriverManager для установления соединения с источником данных
  2. Пулы подключений и пулы PreparedStatements
  3. Распределённые транзакции
  4. Наборы строк (Rowsets)

Приложения используют API DataSource и RowSet напрямую, но API пулов подключений и распределённых транзакций используются внутри инфраструктурой среднего уровня.

Использование объекта DataSource для создания подключения

Пакет javax.sql предоставляет предпочтительный способ создания подключения к источнику данных. Класс DriverManager, первоначальный механизм, по-прежнему действителен, и код, использующий его, будет продолжать работать. Однако, новый механизм, использующий объект DataSource, предпочтительнее, поскольку он предлагает множество преимуществ по сравнению с механизмом DriverManager.

Вот основные преимущества использования объекта DataSource для создания подключения:

  • Изменения свойств источника данных можно внести без изменения кода приложения, что означает, что нет необходимости вносить изменения в код приложения, когда что-то меняется в источнике данных или драйвере.
  • Пулы подключений и PreparedStatements, а также распределённые транзакции доступны через объект DataSource, реализованный для работы с инфраструктурой среднего уровня. Подключения, созданные через DriverManager, не имеют возможностей пулов подключений и PreparedStatements или распределённых транзакций.

Поставщики драйверов предоставляют реализации интерфейса DataSource. Конкретный объект DataSource представляет конкретный физический источник данных, и каждое соединение, созданное объектом DataSource, является соединением с этим физическим источником данных.

Логическое имя источника данных регистрируется в службе именования, использующей API Java Naming and Directory InterfaceTM (JNDI), обычно системным администратором. Приложение может получить нужный объект DataSource через поиск по зарегистрированному логическому имени. Затем приложение может использовать объект DataSource для создания подключения к физическому источнику данных, который он представляет.

Объект DataSource может быть реализован для работы с инфраструктурой среднего уровня, так что создаваемые им подключения будут использоваться в пуле для повторного использования. Приложение, использующее такую реализацию объекта DataSource, автоматически получит подключение, участвующее в пуле подключений. Объект DataSource также может быть реализован для работы с инфраструктурой среднего уровня, чтобы создаваемые им подключения могли использоваться для распределённых транзакций без специального кодирования.

Пулы подключений и пулы PreparedStatements

Подключения, созданные через объект DataSource, реализованный для работы с менеджером пула подключений среднего уровня, будут участвовать в пуле подключений. Это может значительно улучшить производительность, поскольку создание новых подключений очень дорогостоящее. Пулы подключений позволяют использовать и повторно использовать подключение, значительно сокращая количество создаваемых новых подключений.

Пулы подключений полностью прозрачны. Они автоматически выполняются на среднем уровне конфигурации Java EE, поэтому с точки зрения приложения изменения кода не требуются. Приложение просто использует метод DataSource.getConnection для получения подключение из пула и использует его таким же образом, как и любой объект Connection.

Классы и интерфейсы, используемые для пулов подключений:

  • ConnectionPoolDataSource
  • PooledConnection
  • ConnectionEvent
  • ConnectionEventListener
  • StatementEvent
  • StatementEventListener
Менеджер пула подключений, находящийся на среднем уровне трёхслойной архитектуры, использует эти классы и интерфейсы в фоновом режиме. Когда объект ConnectionPoolDataSource вызывается для создания объекта PooledConnection, менеджер пула подключений зарегистрируется как объект ConnectionEventListener с новым объектом PooledConnection. При закрытии подключения или возникновении ошибки менеджер пула подключений (будучи слушателем) получает уведомление, которое включает в себя объект ConnectionEvent.

Если менеджер пула подключений поддерживает пулы PreparedStatements, для PreparedStatements, что можно определить, вызвав метод DatabaseMetaData.supportsStatementPooling, менеджер пула подключений зарегистрируется как объект StatementEventListener с новым объектом PooledConnection. При закрытии PreparedStatement или возникновении ошибки менеджер пула подключений (будучи слушателем) получает уведомление, включающее в себя объект StatementEvent.

Распределённые транзакции

Как и в случае с пулами подключений, подключения, созданные через объект DataSource, реализованный для работы с инфраструктурой среднего уровня, могут участвовать в распределённых транзакциях. Это даёт приложению возможность вовлечь источники данных на нескольких серверах в одну транзакцию.

Классы и интерфейсы, используемые для распределённых транзакций:

  • XADataSource
  • XAConnection
Эти интерфейсы используются менеджером транзакций; приложение не использует их напрямую.

Интерфейс XAConnection получен от интерфейса PooledConnection, поэтому всё, что относится к подключению из пула, также относится к подключению, которое является частью распределённой транзакции. Менеджер транзакций на среднем уровне обрабатывает всё прозрачно. Единственное изменение в коде приложения заключается в том, что приложение не может делать ничего, что могло бы помешать обработке транзакции менеджером транзакций. В частности, приложение не может вызывать методы Connection.commit или Connection.rollback, а также не может установить подключение в режим авто-подтверждения (то есть не может вызывать Connection.setAutoCommit(true)).

Приложению не нужно делать ничего особенного, чтобы участвовать в распределённой транзакции. Оно просто создаёт подключения к источникам данных, которые хочет использовать, через метод DataSource.getConnection, как обычно. Менеджер транзакций управляет транзакцией за кулисами. Интерфейс XADataSource создаёт объекты XAConnection, и каждый объект XAConnection создаёт объект XAResource, который менеджер транзакций использует для управления подключением.

Наборы строк (Rowsets)

Интерфейс RowSet работает с различными другими классами и интерфейсами в фоновом режиме. Их можно сгруппировать в три категории.
END_OF_DOCUMENT_MARKER
  1. Уведомление об событии
    • RowSetListener
      Объект RowSet является компонентом JavaBeansTM, так как он имеет свойства и участвует в механизме уведомления о событиях JavaBeans. Интерфейс RowSetListener реализуется компонентом, который хочет получать уведомления о событиях, происходящих в определенном объекте RowSet. Такой компонент регистрируется как слушатель в наборе строк (rowset) с помощью метода RowSet.addRowSetListener.

      Когда объект RowSet изменяет одну из своих строк, все строки или перемещает свой курсор, он также уведомляет каждого зарегистрированного слушателя. Слушатель реагирует, выполняя свою реализацию метода уведомления, вызываемого на нём.

    • RowSetEvent
      В рамках внутреннего процесса уведомления объект RowSet создаёт экземпляр RowSetEvent и передаёт его слушателю. Слушатель может использовать этот объект RowSetEvent для определения набора строк (rowset), в котором произошло событие.
  2. Метаданные
    • RowSetMetaData
      Этот интерфейс, производный от интерфейса ResultSetMetaData, предоставляет информацию о столбцах в объекте RowSet . Приложение может использовать методы RowSetMetaData, чтобы узнать, сколько столбцов содержит набор строк (rowset) и какой тип данных может содержать каждый столбец.

      Интерфейс RowSetMetaData предоставляет методы для установки информации о столбцах, но приложение обычно не использует эти методы. Когда приложение вызывает метод RowSet execute, объект RowSet будет содержать новый набор строк, а его объект RowSetMetaData будет внутренне обновлён, чтобы содержать информацию о новых столбцах.

  3. Модуль чтения/записи
    Объект RowSet , реализующий интерфейс RowSetInternal, может обратиться к объекту RowSetReader , связанному с ним, чтобы заполнить себя данными. Он также может обратиться к объекту RowSetWriter , связанному с ним, чтобы записать любые изменения в свои строки обратно в источник данных, из которого он изначально получил строки. Набор строк (rowset), который остаётся подключённым к источнику данных, не нуждается в использовании средства чтения и записи, так как он может просто напрямую работать с источником данных.
    • RowSetInternal
      Реализуя интерфейс RowSetInternal, объект RowSet получает доступ к своему внутреннему состоянию и может обратиться к своему средству чтения и записи. Набор строк (rowset) отслеживает значения в своих текущих строках и значения, которые непосредственно предшествовали текущим, которые называются исходными значениями. Набор строк (rowset) также отслеживает (1) параметры, установленные для его команды, и (2) подключение, переданное ему, если таковое имеется. Набор строк использует методы RowSetInternal в фоновом режиме, чтобы получить доступ к этой информации. Приложение обычно не вызывает эти методы напрямую.
    • RowSetReader
      Отключённый объект RowSet , реализовавший интерфейс RowSetInternal, может обратиться к своему средству чтения (объект RowSetReader , связанный с ним), чтобы заполнить себя данными. Когда приложение вызывает метод RowSet.execute, этот метод обращается к средству чтения набора строк (rowset), чтобы выполнить большую часть работы. Реализации могут сильно различаться, но в целом средство чтения устанавливает подключение к источнику данных, считывает данные из источника данных и заполняет набор строк (rowset) ими и закрывает подключение. Средство чтения также может обновить объект RowSetMetaData для своего набора строк. Внутреннее состояние набора строк также обновляется, либо средством чтения, либо непосредственно методом RowSet.execute.
    • RowSetWriter
      Отключённый объект RowSet , реализовавший интерфейс RowSetInternal, может обратиться к своему средству записи (объект RowSetWriter , связанный с ним), чтобы записать изменения обратно в базовый источник данных. Реализации могут значительно различаться, но в целом средство записи выполнит следующие действия:
      • Установить подключение к источнику данных
      • Проверить наличие конфликта, то есть, изменилось ли значение, изменённое в наборе строк (rowset), в источнике данных
      • Записать новые значения в источник данных, если конфликта нет
      • Закрыть подключение

Интерфейс RowSet может быть реализован различными способами, и любой может написать реализацию. Разработчикам рекомендуется использовать свою фантазию, разрабатывая новые способы использования наборов строк (rowset).

ВАЖНОЕ ПРИМЕЧАНИЕ: Код, использующий API, помеченный "Since 1.6", должен выполняться с помощью драйвера JDBC, который реализует API JDBC 4.0. Необходимо проверить документацию своего драйвера, чтобы убедиться, что он реализует необходимые функции.

Since:
1.4

© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API