连接介绍
在获取驱动jar包并配置JDK环境的情况下,通过JDBC连接数据库时需先加载驱动。本节主要介绍驱动加载方式、连接接口以及连接方式。
驱动加载方式
- 在代码中创建连接之前的任意位置装载:
Class.forName("com.huawei.gaussdb.jdbc.Driver"); - 在JVM启动时通过参数传递,“jdbctest”为测试用例程序的名称:
java -Djdbc.drivers=com.huawei.gaussdb.jdbc.Driver jdbctest
- 由于gsjdbc4.jar包与PG的JDBC驱动包类路径一致,若在同一进程内同时使用gsjdbc4.jar包和PG的JDBC驱动包,可能会导致类名冲突。
- 本版本JDBC不再支持IAM认证功能。
- GaussDB JDBC驱动主要提供以下增强特性:
- 支持SHA256登录。
- 支持SM3登录,需自行配置SM3加密所需插件。例如JDK8,可按下列示例在pom.xml中配置。
<dependency> <groupId>org.bouncycastle</groupId> <artifactId>bcprov-jdk18on</artifactId> <version>1.75</version> <scope>compile</scope> </dependency>
- 支持对接实现SLF4J接口的第三方日志框架。
- 支持连接级别的分布式负载均衡。
- 支持容灾切换。
连接接口
| 三种接口 | 方法签名 | 在非透明多写特性下的相关描述 |
|---|---|---|
| 接口一 | DriverManager.getConnection(String url) | 此方式需在url中写入数据库用户名和密码,存在安全风险,因此不推荐使用。 |
| 接口二 | DriverManager.getConnection(String url, String user, String password) | 数据库用户名和密码单独传参,具体请参见采用接口二连接数据库(非透明多写)。 |
| 接口三 | DriverManager.getConnection(String url, Properties info) | 数据库用户名和密码通过info传参,具体请参见采用接口三连接数据库(非透明多写)。 |
关于url、info、user、password参数的描述,请参见表2。
| 参数 | 描述 |
|---|---|
| url | 使用gaussdbjdbc.jar驱动包连接数据库时的连接描述符。 host为服务器名称或IPv4时,格式如下:
host为IPv6时,格式如下:
说明:
|
| info | 数据库连接属性。全量参数请参见连接参数参考。 须知: url和info同时指定一个参数时,url传入的参数优先生效。 |
| user | 数据库用户名。 |
| password | 数据库用户的密码。 |
连接方式介绍
连接数据库的方式通常根据安全性、性能、可扩展性和实现复杂度等因素进行选择。各种连接方式的优缺点,如表3所示。
| 连接方式 | 优点 | 缺点 | 选择原则 |
|---|---|---|---|
| 非加密方式 |
|
| 只适用于内部网络或对安全性要求不高的场景。 |
| SSL方式 |
|
| 适用于对数据传输安全性要求较高的场景,如金融、医疗等行业。 |
| UDS方式 |
|
| 适用于本地通信的场景,如本地服务和应用之间的数据交换。 |
| 国密TLS方式 |
|
| 适用于国内的特定行业,如金融等领域,对国内加密标准有法律要求的场景。 |
建立连接的首包介绍
驱动与数据库建立连接过程中,Socket(套接字)建立之后,由驱动以key value形式向数据库发送的第一个报文为首包。首包内容包括用户名(user)、数据库名(database)以及部分GUC参数信息(client_encoding、DateStyle、application_name、TimeZone、extra_float_digits、gaussdb.capacity_version、replication、search_path、enable_full_encryption、session_type、uppercase_attribute_name)。GUC参数的具体介绍,请参见《参考》中“数据库运行参数说明 > GUC参数说明”。
- gaussdb.capacity_version参数表示驱动支持的兼容性能力集的版本号,用于驱动与数据库协商此次建立连接时使用的兼容性特性集合。该参数为内部参数。
- 数据库执行以下命令后,上述首包GUC参数的值将被更改为首包设置的值。
reset all;