应用介绍
Java 应用要连 SQL Server,网上翻出来的不是十年前的 jtds 就是某个论坛帖里的 jar 包,连上之后 Always Encrypted 不支持、Entra ID 认证不认、时区又对不上。微软自己维护的这个驱动是官方答案:纯 Java 的 Type 4 驱动,只要把 jar 丢进 classpath,用标准 JDBC API 就能连,机器上不用装任何本地客户端。
它跟着 SQL Server 和 Azure SQL 的特性走——连接字符串里 `encrypt=true` 直接开 TLS,Always Encrypted 的列在驱动层透明解密,Microsoft Entra ID 的几种认证方式都有对应的 authentication 参数。因为是纯 Java,Windows、Linux、macOS、Solaris 只要有 JVM 就能跑,容器里也不用额外装东西。MIT 协议,源码在 GitHub 上。
标准 JDBC 接口:实现 JDBC 规范,DriverManager、Connection、PreparedStatement 这一套照常用,框架层(Hibernate、MyBatis、Spring Data)无需特殊适配。
连接字符串开箱即用:`jdbc:sqlserver://host:1433;databaseName=mydb;encrypt=true` 这种形式,超时、连接池、故障转移伙伴、应用名等都是分号分隔的参数。
多种认证方式:SQL 登录、Windows 集成认证、Microsoft Entra ID(密码、托管标识、服务主体、交互式)都由 authentication 参数选择。
Always Encrypted 透明解密:加密列在驱动层自动解密,应用代码拿到的是明文,密钥不经过数据库引擎。
连 Azure 那一套:SQL Server、Azure SQL Database、Azure SQL 托管实例、Azure Synapse 用同一个驱动,换目标只改连接字符串。
纯 Java 跨平台:没有本地库依赖,任何有 JVM 的系统都能跑,Docker 镜像里不用额外装 ODBC 之类的东西。
批量与流式读写:支持批量插入、大对象流式读取,处理大结果集时不用整份载进内存。
MIT 开源:源码在 GitHub 上公开,问题可以直接提 issue,不是只能等补丁。
它跟着 SQL Server 和 Azure SQL 的特性走——连接字符串里 `encrypt=true` 直接开 TLS,Always Encrypted 的列在驱动层透明解密,Microsoft Entra ID 的几种认证方式都有对应的 authentication 参数。因为是纯 Java,Windows、Linux、macOS、Solaris 只要有 JVM 就能跑,容器里也不用额外装东西。MIT 协议,源码在 GitHub 上。
软件功能
标准 JDBC 接口:实现 JDBC 规范,DriverManager、Connection、PreparedStatement 这一套照常用,框架层(Hibernate、MyBatis、Spring Data)无需特殊适配。
连接字符串开箱即用:`jdbc:sqlserver://host:1433;databaseName=mydb;encrypt=true` 这种形式,超时、连接池、故障转移伙伴、应用名等都是分号分隔的参数。
多种认证方式:SQL 登录、Windows 集成认证、Microsoft Entra ID(密码、托管标识、服务主体、交互式)都由 authentication 参数选择。
Always Encrypted 透明解密:加密列在驱动层自动解密,应用代码拿到的是明文,密钥不经过数据库引擎。
连 Azure 那一套:SQL Server、Azure SQL Database、Azure SQL 托管实例、Azure Synapse 用同一个驱动,换目标只改连接字符串。
纯 Java 跨平台:没有本地库依赖,任何有 JVM 的系统都能跑,Docker 镜像里不用额外装 ODBC 之类的东西。
批量与流式读写:支持批量插入、大对象流式读取,处理大结果集时不用整份载进内存。
MIT 开源:源码在 GitHub 上公开,问题可以直接提 issue,不是只能等补丁。

