English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

SpringBoot JDBC

Spring Boot JDBC )은 애플리케이션을 JDBC 연결과 연결하는 런처와 라이브러리를 제공합니다.

Spring Boot JDBC에서, 데이터베이스와 관련된 Bean(예를 들어 DataSource, JdbcTemplate NamedParameterJdbcTemplate )이 시작 시에 자동으로 설정되고 생성됩니다. 그들을 사용하려면, 이러한 클래스를 자동으로 구성할 수 있습니다. 예를 들어:

@Autowired
JdbcTemplate jdbcTemplate;
@Autowired
private NamedParameterJdbcTemplate jdbcTemplate;

에서 설정 application.properties 파일에서, 우리는 DataSource 연결 풀。Spring Boot는 기본적으로 tomcat 풀입니다.

JDBC 연결 풀

JDBC 연결 풀은 관리 여러 개데이터베이스 연결 요청 메커니즘입니다. 다른 말로 하면, 그것은 연결 재사용을 촉진합니다. 즉, 데이터베이스 연결의 메모리 캐시로 불리는 연결 풀。연결 풀 모듈은 그것을 표준 JDBC 드라이버 제품 위에 한 층으로 유지합니다.

데이터 접근 속도를 높이고 애플리케이션의 데이터베이스 연결 수를 줄일 수 있습니다. 또한 애플리케이션의 성능을 높일 수 있습니다. 연결 풀은 다음과 같은 작업을 수행합니다:

사용 가능한 연결을 관리합니다 새 연결을 할당합니다 연결을 닫습니다

위 그림에서는 클라이언트, 하나의 연결 풀(사용 가능한 네 개의 연결을 가진)과 1개 데이터 소스.

첫 번째 그림에서, 세 개의 클라이언트가 다른 연결에 연결되었으며, 연결이 사용 가능합니다. 두 번째 그림에서, 클라이언트3연결이 끊어졌으며, 그 연결은 사용 가능합니다.

클라이언트가 작업을 완료하면, 그 연결을 해제하고 그 연결은 다른 클라이언트에 사용할 수 있습니다.

HikariCP

SpringBoot 2의 기본 연결 풀은 HikariCP 그것은 기업 준비된 기능과 더 나은 성능을 제공합니다. HikariCP는 JDBC 데이터 소스 구현으로, 연결 풀 메커니즘을 제공합니다.

HikariCP가 클래스 경로에 존재하면, Spring Boot가 자동으로 설정합니다. HikariCP를 찾지 못하면, Spring Boot는 Tomcat JDBC 연결 풀. 를 찾으면 그것을 선택합니다. 위 두 가지 옵션이 모두 사용할 수 없다면, Spring Boot는 Apache Commons DBCP2 를 JDBC 연결 풀로 설정합니다.

을 사용하지 않고자 한다면, 연결 풀을 수동으로 설정할 수 있습니다. 예를 들어, Tomcat JDBC 연결 풀을 HikariCP 대신 사용하려면, HikariCP 의 의존성을 추가하고 pom.xml 파일에 tomcat-jdbc 의 의존성을 다음과 같이 추가합니다.

<dependency>
<groupId>org.springframework.boot/<groupId>
<artifactId>spring-boot-starter-data-jpa</ artifactId >
<exclusions>
<exclusion>
<groupId>com.zaxxer/<groupId>
<artifactId>HikariCP/ artifactId >
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.tomcat</<groupId>
<artifactId>tomcat-jdbc</artifactId>
<version>9.0.10</version>
</dependency>
<dependency>
<groupId>com.h2database</<groupId>
<artifactId>h2</artifactId>
<version>1.4.9</version>
<socpe>runtime</scoope>
</dependency>

위의 방법으로 Tomcat 연결 풀을 사용할 수 있으며, 직접 코드를 작성하지 않아도 됩니다. @Configuration 클래스를 통해 프로그래밍 방식으로 정의할 수 있습니다. DataSource bean.

또한, Spring Boot에서 사용하는 연결 풀 스캔 알고리즘을 건너뛰고자 할 수 있습니다. application.properties 파일에 속성을 추가하여 spring.datasource.type 를 통해 연결 풀 데이터 소스를 명확히 지정합니다.

Spring.datasource.type=org.apache.tomcat.jdbc.pool.DataSource

Tomcat 연결 풀을 설정했습니다. 지금, application.properties 중에 일부 속성을 추가하여 성능을 최적화하고 특정 요구사항을 충족시킵니다.

spring.datasource.tomcat.initial-size=20
spring.datasource.tomcat.max-wait=25000
spring.datasource.tomcat.max-active=70
spring.datasource.tomcat.max-idle=20
spring.datasource.tomcat.min-idle=9
spring.datasource.tomcat.default-auto-commit=true

MySQL 데이터베이스에 연결하려면, 애플리케이션의 클래스 패스에 JDBC 드라이버를 포함해야 합니다:

<!-- MySQL JDBC 드라이버 -->
<dependency>
<groupId>mysql</<groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>

그 이후로 application.properties 파일에서 정의됩니다 datasoure 속성.

spring.datasource.password=password을 사용하는 경우 MySQL을 사용하는 경우, 다음 속성을 사용하여데이터베이스:

spring.datasource.url=jdbc:mysql://192.168.1.4.3306/:
test3spring.datasource.username=w
codebox

spring.datasource.password=password을 사용하는 경우 Oracle 데이터베이스, 다음 속성을 사용하여

spring.datasource.url=jdbc:oracle:thin:@localhost:1521:orcl
spring.datasource.username=system
spring.datasource.password=Password123
주의: 기본적으로 Spring Boot 2HikariCP를 데이터베이스 연결 풀로 사용합니다. HikariCP가 클래스 패스에 없다면, Spring Boot는 기본적으로 tomcat 풀을 선택합니다.

Spring Boot JDBC를 사용하는 이유는 무엇인가요?

Spring JDBC와 Spring Boot JDBC의 구현은 같습니다. Spring JDBC에 비해, Spring Boot JBDC는 다음과 같은 장점을 가집니다:

Spring Boot JDBC Spring JDBC
Spring JDBC만 필요합니다. spring-boot-starter-jdbc 의존성.Spring JDBC에서는 여러 의존성을 설정해야 합니다. 예를 들어 spring-jdbc spring-context.
만약 명확하게 유지보수하지 않으면, 자동으로 Datasource bean을 설정합니다. bean을 사용하지 않고 싶다면, 속성을 spring.datasource.initialize 설정하면 false .Spring JDBC에서는 XML 또는 javaconfig 데이터베이스 Bean을 생성합니다.
Spring Boot이 bean을 자동으로 등록하기 때문에 템플릿 bean을 등록할 필요가 없습니다.템플릿 bean을 등록해야 합니다. PlatformTransactionManager, JDBCTemplate, NamedParameterJdbcTemplate .
.sql 파일에 저장된 모든 데이터베이스 초기화 스크립트는 자동으로 실행됩니다.SQL 파일에서 어떤 데이터베이스 초기화 스크립트(예: 테이블을 삭제하거나 생성)를 생성하면 이 정보를 설정에서 명시적으로 제공해야 합니다.

JDBC vs. Hibernate

JDBC Hibernate
JDBC는기술.Hibernate은 ORM 프레임워크.
JDBC에서는 사용자가 연결을 생성하고 닫을 책임을 진습니다.Hibernate에서는 실행 시스템이 연결을 생성하고 닫을 책임을 진습니다.
그것은 지연 로드를 지원하지 않습니다.그것은 지연 로드를 지원하여 더 나은 성능을 제공합니다.
그것은 연결을 지원하지 않습니다(두 개의 별도의 클래스 간의 연결).그것은 연결을 지원합니다.

다음 부분에서는 Spring Boot 애플리케이션에서 MySQL의 연결성을 배울 것입니다.