DBCP
DataBase Connection Pool
- DB Connection을 만드는 과정은 훨씬 복잡한데 내부 처리 해줌
- 커넥션을 미리 만들어놓고, 필요할 때 가져다 쓰는 방식
- 최소 유지 개수 / 유지 시간 / 타임아웃 시간 설정 등
- 어플리케이션의 성능에 많은 영향을 줌
스프링 부트의 DBCP
- HikariCP (기본)
- Tomcat CP
- Commons DBCP2
DBCP 설정 변경하기
spring.datasource.hikari.*
spring.datasource.tomcat.*
spring.datasource.dbcp2.*
- 다른 자동 설정과 유사하게 HikariConfig에 정의되어 있다.
- spring.datasource.hikari.maximum-pool-size
- 이와 유사하게 auto-commit / connection-timeout 등
- https://docs.spring.io/spring-boot/docs/current/reference/html/appendix-application-properties.html
MySQL Connector 추가 (MySQL JDBC Driver)
mysql-connector-java 의존성 추가
MySQL 자체가 아닌, 이에 접속할 수 있는 커넥터
MySQL 추가
강의에선 docker를 통해 DB인스턴스를 띄웠으나, 컴퓨터 메모리가 부족해 docker desktop for windows를 실행하기에
메모리가 부족한 관계로 생략...
(AWS 서버를 이용하든, 도커를 이용하든, MySQL 인스턴스가 띄워져 있다고 가정하자!)
JDBC 설정과 MySQL 접속
spring.datasource.url=jdbc:mysql://localhost:3306/springboot
spring.datasource.username=kkambi
spring.datasource.password=pass
접속 명령어 : mysql -u kkambi -p
MySQL 5 이상부터 SSL접속 권장
경고 메세지 : According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set.
해결책 : useSSL=false 를 URL Query String으로 추가
사실 MySQL보다 PostgreSQL 권장
- 라이센스 비용 요구 → MariaDB Community로 대체, but GPL2
- GPL로 소스 공개 의무 → PostgreSQL로 대체
cf) GPL = General Public License
PostgreSQL JDBC Driver 추가
org.postgresql:postgresql 의존성 추가
(mysql-connector-java와 같은 드라이버)
PostgreSQL 설치
강의에서도 여전히 도커를 활용하여 인스턴스 구동.
나는 로컬에 직접 설치하는 방법을 택했다.
- PostgreSQL installer for windows를 실행하여 설치한다.
- psql(SQL Shell)이 같이 설치된 것을 볼 수 있다.
- psql을 구동하여 접속 정보를 입력하여 접속 (url, dbname, port, username, password)
- default server : localhost
- default database : postgres
- default port : 5432
- default username : postgres
가이드 : https://dora-guide.com/postgresql-install/
JDBC 설정과 PostgreSQL 접속
spring.datasource.url=jdbc:postgresql://localhost:3306/springboot
spring.datasource.username=kkambi
spring.datasource.password=pass
- 데이터베이스 조회 : \list → 기본 DB만 존재
- 데이터베이스 생성 : CREATE DATABASE springboot;
- 데이터베이스 변경 : \c springboot
- 테이블 조회 : \dt
cf) spring.datasource.driver-class-name을 설정하지 않아도, URL로 추측해서 자동 설정
cf) USER는 PostgreSQL의 키워드이므로 다른 이름 사용 (ex. ACCOUNT)
cf) PostgreSQL에는 VARCHAR2 타입이 없으므로 유의!
'학습 > Spring' 카테고리의 다른 글
[spring] 스프링 어노테이션 및 메소드 정리 (1) | 2020.05.10 |
---|---|
[spring] 스프링 부트에서 Spring Data JPA 사용하기 (0) | 2020.05.07 |
[spring] 스프링 부트에서 JDBC와 In-memory DB 사용하기 (0) | 2020.05.05 |
[spring] 스프링 웹 MVC의 CORS 지원 (0) | 2020.05.03 |
[spring] 스프링 부트의 Hateoas 지원 (2) | 2020.05.03 |
댓글