# 连接介绍
在获取驱动jar包并配置JDK环境的情况下，通过JDBC连接数据库时需先加载驱动。本节主要介绍驱动加载方式、连接接口以及连接方式。
#### 驱动加载方式
驱动加载有两种方式：
- 在代码中创建连接之前的任意位置装载：
  ```
  Class.forName("com.huawei.gaussdb.jdbc.Driver");
  ```
  
- 在JVM启动时通过参数传递，"jdbctest"为测试用例程序的名称：
  ```
  java -Djdbc.drivers=com.huawei.gaussdb.jdbc.Driver jdbctest
  ```
  
![](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
- 由于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接口的第三方日志框架。
  
  - 支持连接级别的分布式负载均衡。
  
  - 支持容灾切换。
   
 
#### 连接接口
JDBC提供了三种接口，用于创建数据库连接，请参见[表1]。
 表1数据库连接接口 
| 三种接口  | 方法签名                                                                 | 在非透明多写特性下的相关描述                                                                                                                                                                    |
|:---|:---|:---|
| 接口一 | DriverManager.getConnection(String url)                                | 此方式需在url中写入数据库用户名和密码，存在安全风险，因此不推荐使用。                                                                                                                                            |
| 接口二   | DriverManager.getConnection(String url, String user, String password) | 数据库用户名和密码单独传参，具体请参见[采用接口二连接数据库（非透明多写）](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0082.html#ZH-CN_TOPIC_0000002620640105__section194002419227)。      |
| 接口三  | DriverManager.getConnection(String url, Properties info)             | 数据库用户名和密码通过info传参，具体请参见[采用接口三连接数据库（非透明多写）](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0082.html#ZH-CN_TOPIC_0000002620640105__section4831239172513)。 |
   
关于url、info、user、password参数的描述，请参见[表2]。
 表2数据库连接参数 
| 参数       | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
|:---|:---|
| url      | 使用gaussdbjdbc.jar驱动包连接数据库时的连接描述符。 host为服务器名称或IPv4时，格式如下： - jdbc:gaussdb:  - jdbc:gaussdb:database  - jdbc:gaussdb://host/database  - jdbc:gaussdb://host:port/database  - jdbc:gaussdb://host:port/database?param1=value1\&param2=value2  - jdbc:gaussdb://host1:port1,host2:port2/database?param1=value1\&param2=value2   host为IPv6时，格式如下： - jdbc:gaussdb:  - jdbc:gaussdb:database  - jdbc:gaussdb://host/database或jdbc:gaussdb://\[host\]/database  - jdbc:gaussdb://\[host\]:port/database  - jdbc:gaussdb://\[host\]:port/database?param1=value1\&param2=value2  - jdbc:gaussdb://\[host1\]:port1,\[host2\]:port2/database?param1=value1\&param2=value2   说明： - database为要连接的数据库名称。数据库名称缺省则与用户名一致。  - host在非透明多写特性下为数据库服务器名称或IP地址。同时支持IPv4和IPv6。 在非透明多写特性下，由于安全原因，数据库CN禁止集群内部其他节点无认证接入。如果要在集群内部访问CN，请将JDBC程序部署在CN所在机器，host使用"127.0.0.1"。否则可能会上报"FATAL: Forbid remote connection with trust method!"错误。 建议业务系统单独部署在集群外部，否则可能会影响数据库运行性能。 缺省情况下，连接服务器为localhost。   - port在非透明多写特性下为数据库服务器端口。 缺省情况下，会尝试连接5432端口。   - 当host为IPv6且在url中指定port时，需要通过"\[\]"分隔IP，如：\[IP\]:port。  - param为参数名称，即数据库连接属性。参数可以配置在url中，以"?"开始配置，使用"="给参数赋值，使用"\&"分隔不同参数。  - value为参数值，即数据库连接属性值。  - 连接时需配置connectTimeout、socketTimeout，如果未配置，默认为0，即不会超时。在服务端与客户端出现网络故障时，客户端一直未收到服务端ACK确认报文，会启动超时重传机制，不断地进行重传。当重传次数达到默认的15次会报超时错误，会导致RTO很高。  - 使用JDBC标准接口建立连接时，请确保url格式的合法性。若url格式不合法，会导致连接失败，且报错信息中包含原始url字符串，可能造成敏感信息泄露。  - url中不推荐配置密码、凭证等敏感信息，建议通过Properties连接属性来设置敏感信息，详细操作请参见[采用接口三连接数据库（非透明多写）](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0082.html#ZH-CN_TOPIC_0000002620640105__section4831239172513)。   |
| info     | 数据库连接属性。全量参数请参见[连接参数参考](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0086.html)。 须知： url和info同时指定一个参数时，url传入的参数优先生效。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| user     | 数据库用户名。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| password | 数据库用户的密码。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
   
#### 连接方式介绍
连接数据库的方式通常根据安全性、性能、可扩展性和实现复杂度等因素进行选择。各种连接方式的优缺点，如[表3]所示。
 表3连接方式介绍 
| 连接方式    | 优点                                                                                                                                                                                                                                                             | 缺点                                                                                                                                                                                                                                                     | 选择原则                        |
|:---|:---|:---|:---|
| 非加密方式 | - 简单易实现，无需额外的加密和解密操作。  - 性能较高，因为不需要进行加密/解密操作，减少了数据传输的开销。    | - 安全性较低，数据在传输过程中容易被窃听或篡改。  - 不适合传输敏感信息，可能违反隐私保护法规。       | 只适用于内部网络或对安全性要求不高的场景。        |
| SSL方式 | - 提供了加密传输，数据在传输过程中得到保护，安全性较高。  - 支持客户端/服务器身份验证，增强了安全性。   | - 配置和管理相对复杂，需要证书的颁发和更新。  - 在加密和解密大量数据时，可能会增加一些性能开销。   | 适用于对数据传输安全性要求较高的场景，如金融、医疗等行业。  |
| UDS方式   | - 适用于本地通信，不经过网络，传输速度快。  - 不需要额外的网络开销，不容易受到网络攻击。              | - 仅限于在同一台主机上的进程间通信，无法用于远程连接。                                                                                                                       | 适用于本地通信的场景，如本地服务和应用之间的数据交换。 |
   
#### 建立连接的首包介绍
驱动与数据库建立连接过程中，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参数说明"。
![](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/public_sys-resources/notice_3.0-zh-cn.png)
- gaussdb.capacity_version参数表示驱动支持的兼容性能力集的版本号，用于驱动与数据库协商此次建立连接时使用的兼容性特性集合。该参数为内部参数。
- 数据库执行以下命令后，上述首包GUC参数的值将被更改为首包设置的值。
  ```
  reset all;
  ```
  
 
