스프링 부트 - DBCP, MariaDB 연동하기
DBCP
- DBCP(Database Connection Pool) : DataBase와 Connection을 맺고 있는 객체를 관리하기 위한 Connection
- DB와 연결된 커넥션(connection)을 미리 생성해서 풀(pool)속에 저장해두고 있다가 필요할 때 가져다 쓰고 반환한다.
- 미리 생성해두기 때문에 데이터베이스에 부하를 줄이고 유동적으로 연결을 관리할 수 있다.
- DBCP는 애플리케이션의 성능에 큰 영향을 미친다.
- 스프링 부트는 HikariCP를 기본 DBCP로 사용한다.
MariaDB 연동
- MariaDB는 설치가 되어있다고 가정하고 진행한다. 
- 의존성 추가(MariaDB) - 1 
 2
 3
 4
 5
 6
 7
 8
 9- <dependency> 
 <groupId>org.mariadb.jdbc</groupId>
 <artifactId>mariadb-java-client</artifactId>
 </dependency>
 <dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-jdbc</artifactId>
 </dependency>
- appication.properties- 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10- # 커넥션 객체의 최대 수를 4개로 설정하겠다는 의미 
 =4
 =org.mariadb.jdbc.Driver
 # database명이 springboot이다.
 =jdbc:mariadb://localhost:3307/springboot
 # 자신의 userid (루트 계정이라면 root)
 =userid
 # 자신의 password
 =password
- SpringbootjdbcApplication.java- 1 
 2
 3
 4
 5
 6
 7
 8
 public class SpringbootjdbcApplication {
 public static void main(String[] args) {
 SpringApplication.run(SpringbootjdbcApplication.class, args);
 }
 }
- MariaDBRunner.java- 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 public class implements ApplicationRunner {
 
 DataSource dataSource;
 
 JdbcTemplate jdbcTemplate;
 
 public void run(ApplicationArguments args) throws Exception {
 try(Connection connection = dataSource.getConnection()){
 System.out.println(dataSource.getClass()); // 어떤 DBCP를 사용하는지 확인
 System.out.println(connection.getMetaData().getURL());
 System.out.println(connection.getMetaData().getUserName());
 Statement statement = connection.createStatement();
 String sql = "CREATE TABLE USER(ID INTEGER NOT NULL, name VARCHAR(255), PRIMARY KEY (id))";
 statement.executeUpdate(sql);
 }
 jdbcTemplate.execute("INSERT INTO USER VALUES (1, 'kwon')");
 }
 }
- MySQL Client (MariaDB 10.4 (x64))를 사용하여 접속하여 확인하면 다음과 같이 생성한 테이블과 삽입한 행을 확인할 수 있다.
 
참조
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8/dashboard
