Spec-Zone .ru
спецификации, руководства, описания, API
 Платформа Java™
Стандарт Эд. 7

Пакет javax.sql

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

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

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

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

javax.sql пакет предусматривает следующее:

  1. DataSource взаимодействуйте через интерфейс как альтернатива DriverManager для того, чтобы установить соединение с источником данных
  2. Объединение в пул соединения и объединение в пул Оператора
  3. Распределенные транзакции
  4. Наборы строк

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

Используя a DataSource Объект Сделать Соединение

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

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

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

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

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

Объединение в пул соединения и Объединение в пул Оператора

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

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

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

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

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

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

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

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

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

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

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

Наборы строк

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

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

    • RowSetEvent
      Как часть его внутреннего процесса уведомления, a RowSet объект создает экземпляр RowSetEvent и передачи это слушателю. Слушатель может использовать это RowSetEvent объект узнать, у какого набора строк было событие.

  2. Метаданные
    • RowSetMetaData
      Этот интерфейс, полученный из ResultSetMetaData взаимодействуйте через интерфейс, предоставляет информацию о столбцах в a RowSet объект. Приложение может использовать RowSetMetaData методы, чтобы узнать, сколько содержат столбцы набор строк и какие данные каждый столбец могут содержать.

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

  3. Средство Читателя/Писателя
    A RowSet возразите что реализации RowSetInternal интерфейс может обратиться RowSetReader объект, связанный с этим, чтобы заполнить себя с данными. Это может также обратиться RowSetWriter объект, связанный с этим, чтобы записать любые изменения в его строки назад к источнику данных, от которого это первоначально получило строки. Набор строк, который остается соединенным с его источником данных, не должен использовать читателя и писателя, потому что он может просто работать на источнике данных непосредственно.
    • RowSetInternal
      Реализовывая RowSetInternal интерфейс, a RowSet объект получает доступ к своему внутреннему состоянию и в состоянии обратиться к его читателю и писателю. Набор строк отслеживает значения в его текущих строках и значений, которые сразу предшествовали текущим, называемым исходными значениями. Набор строк также отслеживает (1) параметры, которые были установлены для его команды и (2) соединение, которое передали к нему, если любой. Набор строк использует RowSetInternal методы негласно, чтобы получить доступ к этой информации. Приложение обычно не вызывает эти методы непосредственно.

    • RowSetReader
      Разъединенный RowSet объект, который реализовал RowSetInternal интерфейс может обратиться к своему читателю ( RowSetReader объект, связанный с этим), чтобы заполнить это с данными. Когда приложение вызывает RowSet.execute метод, что вызовы метода на читателе набора строк, чтобы сделать большую часть работы. Реализации могут значительно различаться, но обычно читатель делает соединение с источником данных, данными чтений от источника данных и заполняет набор строк с этим, и закрывает соединение. Читатель может также обновить RowSetMetaData объект для его набора строк. Внутреннее состояние набора строк также обновляется, или читателем или непосредственно методом RowSet.execute.
    • RowSetWriter
      Разъединенный RowSet объект, который реализовал RowSetInternal интерфейс может обратиться к своему писателю ( RowSetWriter объект, связанный с этим), чтобы записать изменения обратно к базовому источнику данных. Реализации могут значительно различаться, но обычно, писатель сделает следующее:

      • Сделайте соединение с источником данных
      • Проверьте, чтобы видеть, есть ли конфликт, то есть, было ли значение, которое было изменено в наборе строк, также изменено в источнике данных
      • Запишите новые значения в источник данных, если нет никакого конфликта
      • Закройте соединение

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

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

Спецификация пакета

Связанная Документация

Серийная книга Java, опубликованная Аддисоном-Уэсли Лонгменом, обеспечивает подробную информацию о классах и интерфейсах в javax.sql пакет:

С тех пор:
1.4
 Платформа Java™
Стандарт Эд. 7

Представьте ошибку или функцию
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.