Java API 개발 과정에서 데이터베이스에 연결하는 것은 일반적인 요구 사항입니다. DriverManager를 사용하여 매번 데이터베이스 연결을 얻으면 오버헤드가 높아지므로 연결 풀 기술을 사용해야 합니다. Druid는 모니터링, 통계, 확장 등 강력한 기능을 갖춘 고성능 JDBC 연결 풀입니다. 이 기사에서는 Java API 개발에 Druid를 사용하는 방법을 소개합니다.
1. Druid 소개
Druid는 뛰어난 성능, 풍부한 기능, 간단한 사용이 특징입니다. Druid 연결 풀의 장점은 다음과 같습니다.
2. Druid를 사용하여 연결 풀 관리
Java 애플리케이션에서 연결 풀 관리에 Druid를 사용하는 방법을 살펴보겠습니다.
<!-- druid --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.10</version> </dependency>
//创建 Properties 对象用于存储配置信息 Properties props = new Properties(); //设置连接池基本属性 props.put("driverClassName", "com.mysql.jdbc.Driver"); props.put("url", "jdbc:mysql://localhost:3306/test"); props.put("username", "root"); props.put("password", "root"); //连接属性配置 props.put("initialSize", "5"); props.put("minIdle", "5"); props.put("maxActive", "20"); props.put("maxWait", "60000"); props.put("timeBetweenEvictionRunsMillis", "60000"); props.put("minEvictableIdleTimeMillis", "300000"); props.put("validationQuery", "SELECT 'x'"); props.put("testWhileIdle", "true"); props.put("testOnBorrow", "false"); props.put("testOnReturn", "false"); props.put("poolPreparedStatements", "true"); props.put("maxOpenPreparedStatements", "20"); props.put("filters", "stat,wall,log4j"); //创建 DruidDataSource 实例 DruidDataSource dataSource = new DruidDataSource(); dataSource.configFromPropety(props);
위 코드에서는 데이터베이스 연결 URL, 사용자 이름, 비밀번호는 물론 초기 연결 수, 최대 연결 수 및 기타 구성 정보를 설정합니다. 그 중 각 구성의 의미는 다음과 같습니다.
minEvictableIdleTimeMillis: 풀에서 연결의 최소 생존 시간(밀리초)입니다.
validationQuery'는 연결이 유효한지 확인하는 데 사용됩니다. 쿼리 문이 필요합니다(문의 실행 결과는 중요하지 않음).
-testWhileIdle: 연결을 신청할 때 테스트됩니다. 유휴 시간이 timeBetweenEvictionRunsMillis보다 큰 경우 유효성 검사를 실행하여 연결이 유효한지 확인합니다.
-testOnBorrow: 연결을 신청할 때 유효성 검사를 실행하여 연결이 유효한지 확인합니다. 이 구성은 성능을 저하시킵니다.
-testOnReturn: 연결을 반환할 때 유효성 검사를 실행하여 연결이 유효한지 확인합니다. 이 구성을 수행하면 성능이 저하되고 연결 풀에 판단이 추가됩니다.
-poolPreparedStatements: prepareStatement, 즉 PSCache를 캐시할지 여부입니다. PSCache는 Oracle과 같이 커서를 지원하는 데이터베이스의 성능을 크게 향상시킵니다. mysql에서 닫는 것이 좋습니다.
-maxOpenPreparedStatements: poolPreparedStatements를 활성화한 후 각 연결에 캐시된 문 수를 지정해야 합니다.
-filters: 속성 유형은 문자열이며 확장 플러그인은 별칭을 통해 구성됩니다. :
监控统计用的filter:stat 日志用的filter:log4j 防御SQL注入的filter:wall
Connection conn = dataSource.getConnection();
// 创建 Druid 连接池 DruidDataSource dataSource = new DruidDataSource(); //... 配置数据库连接池信息 // 配置监控统计 // 设置监控统计用的 Filter,用于统计监控信息 WallFilter wallFilter = new WallFilter(); wallFilter.setDbType("mysql"); StatFilter statFilter = new StatFilter(); statFilter.setSlowSqlMillis(1000); statFilter.setLogSlowSql(true); // 设置 Druid 连接池的 Filters dataSource.setProxyFilters(Arrays.asList(wallFilter, statFilter)); // 打印 SQL 执行日志 Log4jFilter logFilter = new Log4jFilter(); logFilter.setStatementExecutableSqlLogEnable(true); dataSource.setProxyFilters(Collections.singletonList(logFilter));
구체적인 구현 과정에서 필요에 따라 모니터링 통계 또는 로깅 기능을 사용하도록 선택할 수 있습니다.
3. 결론
이 글에서는 Java API 개발 시 Connection Pool 관리를 위해 Druid를 활용하는 방법을 소개합니다. Druid를 사용하면 애플리케이션의 성능을 향상시킬 수 있을 뿐만 아니라, 통계 모니터링, SQL 실행 로그 등의 기능을 통해 애플리케이션의 동작을 보다 포괄적으로 이해할 수 있습니다.
위 내용은 Java API 개발에서 데이터베이스 연결 풀 관리를 위해 Durid 사용의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!