java 连接池

连接池

  • 概念
  • DBCP连接池
    • BasicDataSource
      • 实现方法

概念

  • 实际开发中“获得连接”或“释放资源”是非常消耗系统资源的两个过程,为了解决此类性能问题,通常情况我们采用连接池技术,来共享连接Connection。这样我们就不需要每次都创建连接、释放连接了,这些操作都交给了连接池
  • Java为数据库连接池提供了公共的接口:javax.sql.DataSource

DBCP连接池

  • DBCP也是一个开源的连接池,是Apache Common成员之一,在企业开发中也比较常见,tomcat内置的连接池。

BasicDataSource

  • 连接池 BasicDataSource类(DBCP包中)是DataSource的实现类。

实现方法

  • setDriverClassName(DRIVER); // 这是要连接的数据库的驱动
  • setUrl(URL); //指定要连接的数据库地址
  • setUsername(USERNAME); //指定要连接数据的用户名
  • setPassword(PASSWORD); //指定要连接数据的密码
  • Connection getConnection() 创建并返回一个con
  • maxActive 最大连接数量
  • minIdle 最小空闲连接
  • maxIdle 最大空闲连接
  • initialSize 初始化连接
    public class JDBCUtils {
    	private static BasicDataSource dataSource = new BasicDataSource();
    	static {
    		dataSource.setDriverClassName("com.mysql.jdbc.Driver");
    		dataSource.setUrl("jdbc:mysql://localhost:3306/mybase");
    		dataSource.setUsername("root");
    		dataSource.setPassword("123");
    		
    		dataSource.setInitialSize(10);//初始化的连接数
    		dataSource.setMaxActive(8);//最大连接数量
    		dataSource.setMaxIdle(5);//最大空闲数
    		dataSource.setMinIdle(1);//最小空闲数		
    	}
    	
    	public static DataSource getDataSource() {
    		return dataSource;
    	}
    
    }
    
    public class QueryRunnerDemo {
    	private static QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource());
    	
    	public static void main(String[] args) {
    //		insert();
    		select();				
    	}
    	
    	public static void select() {
    		String sql = "select * from kufang";
    		List<Object[]> list;
    		try {
    			list = qr.query(sql, new ArrayListHandler());
    			for(Object[] obj:list) {
    				for(Object result:obj) {
    					System.out.print(result+"\t");
    				}
    				System.out.println();
    			}
    		} catch (SQLException e) {
    			e.printStackTrace();
    			throw new RuntimeException("数据查询失败");
    		}
    	}
    	
    	public static void insert() {
    		String sql = "insert into kufang (userid,uname,price,shuliang) values (?,?,?,?)";
    		Object[] params = {7,"B-864肉牛",3500,51};
    		try {
    			int row = qr.update(sql,params);
    			System.out.println(row);
    		} catch (SQLException e) {
    			e.printStackTrace();
    			throw new RuntimeException("数据添加失败");
    		}
    	}
    }
    

你可能感兴趣的:(java)