English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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 드라이버 제품 위에 한 층으로 유지합니다.
데이터 접근 속도를 높이고 애플리케이션의 데이터베이스 연결 수를 줄일 수 있습니다. 또한 애플리케이션의 성능을 높일 수 있습니다. 연결 풀은 다음과 같은 작업을 수행합니다:
사용 가능한 연결을 관리합니다 새 연결을 할당합니다 연결을 닫습니다
위 그림에서는 클라이언트, 하나의 연결 풀(사용 가능한 네 개의 연결을 가진)과 1개 데이터 소스.
첫 번째 그림에서, 세 개의 클라이언트가 다른 연결에 연결되었으며, 연결이 사용 가능합니다. 두 번째 그림에서, 클라이언트3연결이 끊어졌으며, 그 연결은 사용 가능합니다.
클라이언트가 작업을 완료하면, 그 연결을 해제하고 그 연결은 다른 클라이언트에 사용할 수 있습니다.
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 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 | Hibernate |
JDBC는기술. | Hibernate은 ORM 프레임워크. |
JDBC에서는 사용자가 연결을 생성하고 닫을 책임을 진습니다. | Hibernate에서는 실행 시스템이 연결을 생성하고 닫을 책임을 진습니다. |
그것은 지연 로드를 지원하지 않습니다. | 그것은 지연 로드를 지원하여 더 나은 성능을 제공합니다. |
그것은 연결을 지원하지 않습니다(두 개의 별도의 클래스 간의 연결). | 그것은 연결을 지원합니다. |
다음 부분에서는 Spring Boot 애플리케이션에서 MySQL의 연결성을 배울 것입니다.