Corda использует Hibernate 5.x с пулом соединений HikariCP JDBC.
Все запросы генерируются Hibernate, ожидайте один запрос от модуля finance
(CashSelection
использует JDBC PreparedStatement
с конструкциями SQL, специфичными для каждого поставщика базы данных).
Настройка базы данных
Во время выполнения узел ищет настройки JDBC в своем файле node.conf
. По умолчанию он подключается к встроенному серверу H2 (см. Файл /node/src/main/resources/reference.conf
в исходном коде Corda).
Чтобы использовать Corda с другими базами данных (*) или подключиться с параметрами, отличными от настроек по умолчанию, в файле node.conf
должны быть установлены свойства источника данных узла:
dataSourceProperties = {
dataSourceClassName = "org.postgresql.ds.PGSimpleDataSource"
dataSource.url = "jdbc:postgresql://[HOST]:[PORT]/postgres"
dataSource.user = [USER]
dataSource.password = [PASSWORD]
}
database = {
transactionIsolationLevel = READ_COMMITTED
}
jarDirs = [PATH_TO_JDBC_DRIVER_DIR]
, где dataSourceProperties
- типичные настройки JDBC, запись database
содержит специфические настройки Hibernate, а jarDirs
- список путей к каталогам, содержащим драйвер (например, jarDirs = ['/Library/postgres-lib']
).
Настройка базы данных в узлах deployNodes
Вы можете избежать настройки параметров базы данных вручную, передав параметры в deployNodes
. Например:
node {
name "O=Bank C,L=Tokyo,C=JP"
p2pPort 10010
webPort 10011
rpcSettings {
address("localhost:10036")
adminAddress("localhost:10037")
}
cordapps = ["$project.group:finance:$corda_release_version"]
rpcUsers = ext.rpcUsers
extraConfig = [
‘dataSourceProperties.dataSource.url’ : ‘jdbc:postgresql://localhost:32774/postgres’,
‘dataSourceProperties.dataSourceClassName’ : ‘org.postgresql.ds.PGSimpleDataSource’,
‘dataSourceProperties.dataSource.user’ : ‘postgres’,
‘dataSourceProperties.dataSource.password’ : ‘postgres’,
‘jarDirs’ : [ ‘/Library/Java/postgres’ ]
]
}
Добавление драйвера
После добавления этих параметров драйвер JDBC необходимо добавить в расположение, указанное в extraConfig.jarDirs
после развертывания узла.
Альтернативой является добавление зависимости драйвера JDBC в node/build.gradle
(как это сделано для PostgreSQL). Всякий раз, когда узел компилируется / собирается, он будет содержать готовый драйвер.
(*) Corda Open Source поставляется с файловой базой данных H2 и имеет экспериментальную поддержку Postgres и Sql Server. Corda Enterprise имеет более широкую протестированную поддержку для других баз данных, включая базы данных Sql Server, AzureSQL, Postgres и Oracle. Несмотря на использование Hibernate / JDBC, некоторые запросы могут потребовать модификации, чтобы быть совместимыми со всеми поддерживаемыми базами данных. Эта совместимость поддерживается Corda Enterprise.