on
스프링 부트 활용 : 스프링 데이터 2부
스프링 부트 활용
DBCP
DBCP란 DataBase Connection Pool을 줄인 말이다.
connection을 여러개 미리 만들어 놓고 필요할 때 마다 가져다 쓰는 것이다. 몇 개를 만들어놓을지, 얼마나 응답이 없으면 error를 던질지 등의 여러가지 설정을 할 수 있다. 이러한 DBCP가 애플리케이션 성능에 아주 핵심적인 역할을 한다.
스프링부트는 기본적으로 HikariCP라는 DBCP를 선택했다.
스프링부트 DBCP 설정
application.properties에 spring.datasource.사용하는DBCP이름.설정값=
으로 설정한다.
spring.h2.console.enabled = true
spring.h2.console.path = /h2-console
spring.datasource.hikari.maximum-pool-size = 4
MySQL
pom.xml에 mysql에 접속할 수 있는 connector(jdbc 구현체)의존성을 추가해줘야한다.
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
그 다음에 MySQL을 설치해줘야한다.
도커1를 사용하면 MySQL을 쉽게 설치할 수 있다.
터미널로 아래의 명령어를 입력한다.
docker run -p 3306:3306 --name mysql_boot -e MYSQL_ROOT_PASSWORD=1 -e MYSQL_DATABASE=springboot -e MYSQL_USER=grace -e MYSQL_PASSWORD=password -d mysql
컨테이너에 있는 3306포트를 localhost의 3306포트로 연결해달라는 뜻으로 mysql_boot는 이 컨테이너의 이름이고, MySQL 설정들을 해준 것이다. 그리고 docker ps
를 실행해보면 mysql 인스턴스를 확인할 수 있다.
mysql에 접속하려면 application.properties에 다음 설정을 적어준다.(mysql 설치 때 설정해준 값)
spring.datasource.hikari.maximum-pool-size = 4
spring.datasource.url = jdbc:mysql://localhost:3306/springboot
spring.datasource.username = grace
spring.datasource.password = password
터미널로 mysql에 접속하기 위해 아래의 명령어를 입력한다. 컨테이너 안에 들어가서 bash를 실행하라는 명령어이다.
docker exec -i -t mysql_boot bash
mysql -u mysql계정 -p 으로 접속한다.
mysql -u grace -p 으로 접속한다.
그 다음 MySQL 러너를 만들어 mysql에 쿼리를 던져보자.
@Component
public class MySQLRunner implements ApplicationRunner {
@Autowired
DataSource dataSource;
@Autowired
JdbcTemplate jdbcTemplate;
@Override
public void run(ApplicationArguments args) throws Exception {
try(Connection connection = dataSource.getConnection()) {
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, 'grace')");
}
}
Reference
1 : 컨테이너 솔루션. 커널을 공유하여 가상머신보다 훨씬 빠르게 설치할 수 있다.
Comments
SPRING BOOT 의 다른 글
-
스프링 부트 활용 : 스프링 데이터 4부 17 Sep 2021
-
스프링 부트 활용 : 스프링 데이터 3부 16 Sep 2021
-
스프링 부트 활용 : 스프링 데이터 2부 15 Sep 2021
-
스프링 부트 활용 : 스프링 데이터 1부 14 Sep 2021
-
스프링 부트 활용 : 스프링 웹 MVC 11부 13 Sep 2021
-
스프링 부트 활용 : 스프링 웹 MVC 10부 10 Sep 2021
-
스프링 부트 활용 : 스프링 웹 MVC 9부 09 Sep 2021
-
스프링 부트 활용 : 스프링 웹 MVC 8부 08 Sep 2021
-
스프링 부트 활용 : 스프링 웹 MVC 7부 03 Sep 2021
-
스프링 부트 활용 : 스프링 웹 MVC 6부 05 Aug 2021
-
스프링 부트 활용 : 스프링 웹 MVC 5부 27 Jun 2021
-
스프링 부트 활용 : 스프링 웹 MVC 4부 13 Jun 2021
-
스프링 부트 활용 : 스프링 웹 MVC 3부 06 Jun 2021
-
스프링 부트 활용 : 스프링 웹 MVC 2부 05 Jun 2021
-
스프링 부트 활용 : 스프링 웹 MVC 1부 30 May 2021
-
스프링 부트 활용 : Spring-Boot-Devtools 30 May 2021
-
스프링 부트 활용 : 테스트 26 May 2021
-
스프링 부트 활용 : 로깅 2부 25 May 2021
-
스프링 부트 활용 : 로깅 1부 23 May 2021
-
스프링 부트 활용 : 프로파일 23 May 2021
-
스프링 부트 활용 : 외부 설정 2부 21 May 2021
-
스프링 부트 활용 : 외부 설정 1부 15 May 2021
-
스프링 부트 활용 : SpringApplication 11 May 2021
-
스프링 부트 원리 : 정리 06 May 2021
-
스프링 부트 원리 : 독립적으로 실행 가능한 JAR 06 May 2021
-
스프링 부트 원리 : 내장 웹 서버 04 May 2021
-
스프링 부트 원리 : 자동 설정 02 May 2021
-
스프링 부트 원리 : 의존성 01 May 2021
-
스프링 부트 시작하기 01 May 2021