Интерфейс DataSource
- Все суперинтерфейсы:
CommonDataSource, Wrapper
public interface DataSource extends CommonDataSource, Wrapper
Фабрика подключений к физическому источнику данных, который представляет этот объект DataSource. Альтернатива средству DriverManager, объект DataSource является предпочтительным способом получения подключения. Объект, реализующий интерфейс DataSource, обычно регистрируется в службе именования, основанной на API Java Naming and Directory (JNDI).
Интерфейс DataSource реализуется поставщиком драйвера. Существует три типа реализаций:
- Базовая реализация -- создает стандартный объект
Connection - Реализация с пулом подключений -- создает объект
Connection, который автоматически участвует в пуле подключений. Эта реализация работает с менеджером пула подключений промежуточного уровня. - Реализация распределенных транзакций -- создает объект
Connection, который можно использовать для распределенных транзакций и который почти всегда участвует в пуле подключений. Эта реализация работает с менеджером транзакций промежуточного уровня и почти всегда — с менеджером пула подключений.
При необходимости свойства объекта DataSource можно изменять. Например, если источник данных перемещен на другой сервер, можно изменить свойство сервера. Преимущество заключается в том, что поскольку свойства источника данных можно изменить, код, обращающийся к этому источнику данных, менять не требуется.
Драйвер, доступ к которому осуществляется через объект DataSource, не регистрирует себя в DriverManager. Вместо этого объект DataSource извлекается с помощью операции поиска, а затем используется для создания объекта Connection. При базовой реализации подключение, полученное через объект DataSource, идентично подключению, полученному с помощью средства DriverManager.
Реализация DataSource должна включать открытый конструктор без аргументов.
- Начиная с версии:
- 1.4
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
default ConnectionBuilder |
createConnectionBuilder() |
Создает новый экземпляр ConnectionBuilder |
Connection |
getConnection() |
Пытается установить подключение к источнику данных, который представляет этот объект DataSource. |
Connection |
getConnection |
Пытается установить подключение к источнику данных, который представляет этот объект DataSource. |
int |
getLoginTimeout() |
Возвращает максимальное время в секундах, в течение которого этот источник данных может ожидать при попытке подключения к базе данных. |
PrintWriter |
getLogWriter() |
Возвращает средство записи журнала для этого объекта DataSource. |
void |
setLoginTimeout |
Задает максимальное время в секундах, в течение которого этот источник данных будет ожидать при попытке подключения к базе данных. |
void |
setLogWriter |
Задает для средства записи журнала этого объекта DataSource указанный объект java.io.PrintWriter. |
Методы, объявленные в интерфейсе CommonDataSource
createShardingKeyBuilder, getParentLogger
Методы, объявленные в интерфейсе Wrapper
isWrapperFor, unwrap
Подробное описание методов
getConnection
Connection getConnection() throws SQLException
Пытается установить подключение к источнику данных, который представляет этот объект DataSource.
- Возвращает:
- подключение к источнику данных
- Выбрасывает:
-
SQLException— если произошла ошибка доступа к базе данных -
SQLTimeoutException— если драйвер определил, что превышено значение времени ожидания, указанное методомsetLoginTimeout, и как минимум попытался отменить текущую попытку подключения к базе данных
getConnection
Connection getConnection(String username, String password) throws SQLException
Пытается установить подключение к источнику данных, который представляет этот объект DataSource.
- Параметры:
-
username— пользователь базы данных, от имени которого устанавливается подключение -
password— пароль пользователя - Возвращает:
- подключение к источнику данных
- Выбрасывает:
-
SQLException— если произошла ошибка доступа к базе данных -
SQLTimeoutException— если драйвер определил, что превышено значение времени ожидания, указанное методомsetLoginTimeout, и как минимум попытался отменить текущую попытку подключения к базе данных - Начиная с версии:
- 1.4
getLogWriter
PrintWriter getLogWriter() throws SQLException
Возвращает средство записи журнала для этого объекта DataSource.
Средство записи журнала — это поток вывода символов, в который будут выводиться все сообщения журналирования и трассировки для этого источника данных. Сюда входят сообщения, выводимые методами этого объекта, методы других объектов, созданных этим объектом, и так далее. Сообщения, выводимые в средство записи журнала, относящееся к конкретному источнику данных, не выводятся в средство записи журнала, связанное с классом java.sql.DriverManager. При создании объекта DataSource средство записи журнала изначально равно null; другими словами, по умолчанию журналирование отключено.
- Указано в:
-
getLogWriterв интерфейсеCommonDataSource - Возвращает:
- средство записи журнала для этого источника данных или null, если журналирование отключено
- Выбрасывает:
-
SQLException— если произошла ошибка доступа к базе данных - Начиная с версии:
- 1.4
- См. также:
setLogWriter
void setLogWriter(PrintWriter out) throws SQLException
Задает для средства записи журнала этого объекта DataSource указанный объект java.io.PrintWriter.
Средство записи журнала — это поток вывода символов, в который будут выводиться все сообщения журналирования и трассировки для этого источника данных. Сюда входят сообщения, выводимые методами этого объекта, методы других объектов, созданных этим объектом, и так далее. Сообщения, выводимые в средство записи журнала, относящееся к конкретному источнику данных, не выводятся в средство записи журнала, связанное с классом java.sql.DriverManager. При создании объекта DataSource средство записи журнала изначально равно null; другими словами, по умолчанию журналирование отключено.
- Указано в:
-
setLogWriterв интерфейсеCommonDataSource - Параметры:
-
out— новое средство записи журнала; чтобы отключить журналирование, задайте значение null - Выбрасывает:
-
SQLException— если произошла ошибка доступа к базе данных - Начиная с версии:
- 1.4
- См. также:
setLoginTimeout
void setLoginTimeout(int seconds) throws SQLException
Задает максимальное время в секундах, в течение которого этот источник данных будет ожидать при попытке подключения к базе данных. Значение 0 указывает, что используется системное время ожидания по умолчанию, если оно задано; в противном случае оно указывает на отсутствие ограничения времени ожидания. При создании объекта DataSource время ожидания входа изначально равно нулю.
- Указано в:
-
setLoginTimeoutв интерфейсеCommonDataSource - Параметры:
-
seconds— ограничение времени ожидания входа для источника данных - Выбрасывает:
-
SQLException— если произошла ошибка доступа к базе данных. - Начиная с версии:
- 1.4
- См. также:
getLoginTimeout
int getLoginTimeout() throws SQLException
DataSource время ожидания входа изначально равно нулю.- Указано в:
-
getLoginTimeoutв интерфейсеCommonDataSource - Возвращает:
- ограничение времени ожидания входа для источника данных
- Выбрасывает:
-
SQLException— если произошла ошибка доступа к базе данных. - Начиная с версии:
- 1.4
- См. также:
createConnectionBuilder
default ConnectionBuilder createConnectionBuilder() throws SQLException
ConnectionBuilder- Требования к реализации:
- Реализация по умолчанию выбрасывает
SQLFeatureNotSupportedException - Возвращает:
- созданный экземпляр ConnectionBuilder
- Выбрасывает:
-
SQLException— если при создании построителя произошла ошибка -
SQLFeatureNotSupportedException— если драйвер не поддерживает сегментирование - Начиная с версии:
- 9
- См. также:
© 1993, 2025, 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.sql/javax/sql/DataSource.html