池化思想:
connection是一种稀有资源。建立连接是比较耗资源。
第一种方案:每一台服务器就一个人用。
第二种方案:将服务器人数限制一下,最多不能超过1w,超过了就排队。
优点:
资源重用
提升响应速度
资源分配策略
统一管理
Datasource被称为数据源,是java.sql.jdk提供的。是java对外暴露的一个接口。
DataSource取代DriverManger来获取Connection,获取速度快,同时可以大幅度提高数据。
注意:
数据源和数据库连接不同,数据源无需创建多个,类似于一个工厂。整个应用只需要一个数据源
当数据库访问结束后,conn.close()关闭连接
现在也可以conn.close()不再是真正的关闭,而是把数据库连接还给连接池。
我们甚至可以不考虑资源释放问题,可以设置连接超时时间。
数据库连接池技术,第三方
C3P0连接池
DBCP连接池
Druid(德鲁伊)数据库连接池。阿里巴巴,目前最好的数据池。
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.io.IOException;
import java.sql.*;
import java.util.Properties;
/**
* @author jsoft
*/
public class JDBCUtils {
private static DataSource dataSource;
public JDBCUtils() {
}
public static DataSource getDataSource() {
return dataSource;
}
static {
Properties properties = new Properties();
try {
properties.load(JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties"));
dataSource = DruidDataSourceFactory.createDataSource(properties);
} catch (IOException var2) {
throw new RuntimeException(var2);
} catch (Exception var3) {
throw new RuntimeException(var3);
}
}
public static void release(Connection connection, Statement statement, ResultSet rs) {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
if (statement != null) {
try {
statement.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}
}
Hikari(光)springboot默认内置的连接池,最快的连接池。
分层开发
com.jsoft.entity包下都是实体类
com.jsoft.util包下都是工具类
com.jsoft.dao包操作数据库表格的类
com.jsoft.serivice包处理业务逻辑
com.jsoft.exception包下都是自定义异常