学习分享
最坏的习惯,是苟安于当下的生活,不知道明天的方向
批量更新:API
addBatch(String sql)
Statement类的方法,可以将多条SQL语句添加到Statement对象的SQL语句列表中
executeBatch()
把Statement对象语句列表中的所有SQL语句发送给数据库进行处理
clearBatch()
清空当前SQL语句列表
防止OutOfMemory
如果statement对象中德SQL列表包含过多的待处理SQL语句,可能会产生OutOfMemory错误
解决办法是即使处理SQL语句列表
for(int i = 0 ; i < 100000 ; i++) {
sql = "insert into ....";
stmt.addBatch(sql);
if(i % 500 == 0) {
stmt.executeBatch(); // 及时处理
stmt.clearBatch(); // 清空列表
}
} // 最后一次列表不足500条,处理
stmt.executeBatch();
返回自动主键
主表/从表关联关系中,插入数据时需要保证数据完整性
关联数据插入的流程如下
用户点击下单插入主表记录(订单信息表)获取主表主键值插入从表记录,上一步获得的主表主键值,作为从表外键值下单成功JDBC返回自动主键API
利用Statement的getGeneratedKeys方法获取自增类型的数据,性能良好;
数据库连接池
为什么要使用连接池
数据库连接的建立及关闭资源消耗巨大
传统数据库访问方式:一次数据库访问对应一个物理连接,每次操作数据库都要打开,关闭该物理连接,系统性能严重受损
解决方案:数据库连接池(Connection Pool)
系统初始运行时,主动建立足够的连接,组成一个池,每次应用程序请求数据库连接时,无需重新打开连接,而是从池中取出已有的连接,使用完后,不在关闭,而是归还
连接池中连接的释放与使用原则
应用启动,创建初始化数目的连接
当申请时无连接可用或者达到指定的最小连接数,按增量参数值创建新的连接
为确保连接池中最小的连接数的策略
动态检查:定时检查连接池,一旦发现数量小于最小连接数,则补充相应的新连接,保证连接池的正常运转
静态检查:空闲连接不足时,系统才检查是否达到最小连接数
按需分配,用过归还,空闲超时释放,获取超时报错
连接池也只是接口,具体实现由厂商来完成
使用Apache DBCP 连接池
DBCP (DataBase connection pool): 数据库连接池
Apache的一个Java连接池开源项目,同时也是Tomcat使用的连接池组件
连接池是创建和管理连接的缓冲池技术,将连接准备好被任何需要它们的应用使用
需要依赖的两个jar包
commons-dbcp2-2.1.1 连接池的实现
commons-pool2-2.4.2 连接池实现的依赖库
BasicDataSource datasource = new BasicDataSource();
// 设置驱动,URL,账号,密码
datasource.setDriverClassName(driveClassName);
datasource.setUrl(url);
datasource.setUsername(username);
// 从连接池对象中获取连接
Connection conn = datasource.getConnection();
// 将连接归还到连接池
conn.close() ; // 连接池的connection重写了close()方法,不再是关闭连接
连接池常用参数
初始连接数
initialSize , 默认0
当这个池被启动时初始化的创建的连接个数
最大连接数
maxTotal , 默认8
可以在这个池中同时被分配的有效连接数的最大值,如设置为负数,则不限制
最大空闲数
maxIdle , 默认8
可以在池中保持空闲的最大连接数,超出设置值之外的空闲连接将被回收,如设置为负数,则不限制
最小空闲数
minIdle , 默认 0
可以在池中保持空闲的最小连接数,超出设置值之外的空闲连接将被创建,如设置为0,则不创建
最大超时时间
maxWaitMillis , 单位毫秒,默认最大int值
(如果没有可用连接)池在抛出异常前等待的一个连接被归还的最大毫秒数,设置为-1则等待时间不确定
本网站属于个人的非盈利性网站、博客,主要是一些学习过程中的一些心得分享和笔记,同时可能存在部分非私人原创撰写的文章,由于在过程中浏览过别人分享于本人的资源,可能一些源自于网络,亦可能误摘抄他人分享转载的文章,按照目前互联网开放的原则,将在不通知作者的情况下,转载文章;如果原文明确注明“禁止转载”,被本人误载入,非常抱歉,请务必来信告知:miku109040azusa@vip.qq.com
© 2016-2017 Build by Chen | WinterSakura.COM 粤ICP备17119124号