>Java >java지도 시간 >Java API 개발에서 데이터베이스 연결 풀 관리를 위해 Durid 사용

Java API 개발에서 데이터베이스 연결 풀 관리를 위해 Durid 사용

WBOY
WBOY원래의
2023-06-19 08:44:421866검색

Java API 개발 과정에서 데이터베이스에 연결하는 것은 일반적인 요구 사항입니다. DriverManager를 사용하여 매번 데이터베이스 연결을 얻으면 오버헤드가 높아지므로 연결 풀 기술을 사용해야 합니다. Druid는 모니터링, 통계, 확장 등 강력한 기능을 갖춘 고성능 JDBC 연결 풀입니다. 이 기사에서는 Java API 개발에 Druid를 사용하는 방법을 소개합니다.

1. Druid 소개
Druid는 뛰어난 성능, 풍부한 기능, 간단한 사용이 특징입니다. Druid 연결 풀의 장점은 다음과 같습니다.

  1. SQL 요청에 대한 빠른 응답
  2. SQL 모니터링 기능 제공
  3. SQL 실행 시간의 평균, 최대, 최소값과 같은 통계 데이터 제공
  4. Anti-SQL 주입 기능 활성화
  5. Druid 코드 데이터베이스 드라이버만큼 작으며 2MB 이하로 임베디드 애플리케이션에 매우 적합합니다.

2. Druid를 사용하여 연결 풀 관리
Java 애플리케이션에서 연결 풀 관리에 Druid를 사용하는 방법을 살펴보겠습니다.

  1. Druid 종속성 소개
    pom.xml에 Druid 관련 종속성 소개
<!-- druid -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.10</version>
</dependency>
  1. Druid 연결 풀 구성
    Druid 연결 풀을 사용하기 전에 구성해야 합니다. Druid 구성은 코드와 구성 파일의 두 가지 방법을 통해 수행할 수 있습니다. 여기서는 코드 방법을 예로 들어보겠습니다.
//创建 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, 사용자 이름, 비밀번호는 물론 초기 연결 수, 최대 연결 수 및 기타 구성 정보를 설정합니다. 그 중 각 구성의 의미는 다음과 같습니다.

  • driverClassName: JDBC 드라이버 전체 클래스 이름
  • url: 데이터베이스 연결 URL
  • username: 데이터베이스 연결 사용자 이름
  • password: 데이터베이스 연결 비밀번호
  • initialSize: 물리적인 설정 초기화 번호 중 연결. 초기화는 시작 시 발생합니다.
  • maxActive: 최대 연결 풀 수
  • minIdle: 최소 연결 풀 수
  • maxWait: 연결을 얻을 때 최대 대기 시간(밀리초).
  • timeBetweenEvictionRunsMillis: 두 가지 의미가 있습니다. 1) Destroy 스레드가 연결 간격을 감지합니다. 2) testWhileIdle의 판단 기준은 자세한 내용은 testWhileIdle 속성 설명을 참조하세요
  • minEvictableIdleTimeMillis: 풀에서 연결의 최소 생존 시간(밀리초)입니다.
    validationQuery'는 연결이 유효한지 확인하는 데 사용됩니다. 쿼리 문이 필요합니다(문의 실행 결과는 중요하지 않음).
    -testWhileIdle: 연결을 신청할 때 테스트됩니다. 유휴 시간이 timeBetweenEvictionRunsMillis보다 큰 경우 유효성 검사를 실행하여 연결이 유효한지 확인합니다.
    -testOnBorrow: 연결을 신청할 때 유효성 검사를 실행하여 연결이 유효한지 확인합니다. 이 구성은 성능을 저하시킵니다.
    -testOnReturn: 연결을 반환할 때 유효성 검사를 실행하여 연결이 유효한지 확인합니다. 이 구성을 수행하면 성능이 저하되고 연결 풀에 판단이 추가됩니다.
    -poolPreparedStatements: prepareStatement, 즉 PSCache를 캐시할지 여부입니다. PSCache는 Oracle과 같이 커서를 지원하는 데이터베이스의 성능을 크게 향상시킵니다. mysql에서 닫는 것이 좋습니다.
    -maxOpenPreparedStatements: poolPreparedStatements를 활성화한 후 각 연결에 캐시된 문 수를 지정해야 합니다.
    -filters: 속성 유형은 문자열이며 확장 플러그인은 별칭을 통해 구성됩니다. :

      监控统计用的filter:stat
      日志用的filter:log4j
      防御SQL注入的filter:wall
    
  1. 데이터베이스 연결 가져오기
    DruidDataSource 인스턴스가 생성된 후 DruidDataSource.getConnection() 메서드를 통해 연결을 얻을 수 있습니다.
Connection conn = dataSource.getConnection();
  1. 모니터링 통계 및 SQL 실행 로그 구현
    Druid는 Connection Pool의 기본 기능 외에 통계 모니터링, SQL 실행 로그 등의 실용적인 기능도 제공합니다. 코드를 개발할 때 필터를 설정하면 이를 달성할 수 있습니다.
// 创建 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.