Java应用实践 本页主要介绍了 JDBC、连接池和数据库访问框架。 通常 Java 应用中和数据库相关的常用组件有: JDBC API 及实现:Java 应用通常使用 JDBC (Java Database Connectivity) 来访问数据库。JDBC 定义了访问数据库 API,而 JDBC 实现完成标准 API 到 MySQL 协议的转换,常见的 JDBC 实现是 MySQL Connector/J,此外有些用户可能使用 MariaDB Connector/J。 数据库连接池:为了避免每次创建连接,通常应用会选择使用数据库连接池来复用连接,JDBC DataSource 定义了连接池 API,开发者可根据实际需求选择使用某种开源连接池实现。 数据访问框架:应用通常选择通过数据访问框架 (MyBatis, Hibernate) 的封装来进一步简化和管理数据库访问操作。 JDBC 为避免重复解析和生成 SQL 执行计划的开销,注意选择使用 Prepare API,并且需要在 JDBC 连接参数中配置 useServerPrepStmts true。 对于批量插入更新,如果插入记录较多,可以选择使用 addBatch/executeBatch API。通过 addBatch 的方式将多条 SQL 的插入更新记录先缓存在客户端,然后在 executeBatch 时一起发送到数据库服务器,如果希望 Batch 网络发送,需要在 JDBC 连接参数中配置 rewriteBatchedStatements true。 在查询返回超大结果集的场景中,推荐设置 FetchSize为Integer.MINVALUE让客户端不缓存,客户端通过 StreamingResult 的方式从网络连接上流式读取执行结果。使用流式读取数据时,需要将resultset读取完成或 close 后,才能继续使用该语句进行下次查询,否则会报错。如果需要在resultset读取完成或 close 前进行查询避免报错,可在 URL 中添加配置参数clobberStreamingResultstrue,这样会自动 close resultset,但之前流式查询未被读取的结果集会丢失。