-
스프링 데이터 - 1 (스프링 부트 활용 - 7)Programming/Spring Boot 2020. 3. 11. 15:50728x90
1. 인-메모리 데이터베이스
- H2(추천 : 콘솔 때문에), HSQL, Derby
- 기본 연결 정보 (URL : "testdb", username: "sa", password : "")
1) H2, JDBC 를 의존성에 추가
2) Runner 코드를 작성
Spring-JDBC가 클래스 패스에 있으면 자동 설정이 필요한 빈(DataSource, JdbcTemplate)들을 설정해줌
@Component public class H2Runner 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.execute(sql); } jdbcTemplate.execute("INSERT INTO USER VALUES (1, 'hongchan')"); } }
2) H2 콘솔 사용하는 방법
- 외부 설정에 spring.h2.console.enabled=true 추가
- localhost:8080/h2-console 접속
필자의 경우 JDBC URL이 맞지 않아 연결이 잘 되지 않아,
System.out.println(connection.getMetaData().getURL());
출력 값을 복붙하였다.
2. MySQL 설정하기
DBCP
- DBCP 란? (DB Connection Pool) DB 커넥션을 관리함.
- 지원하는 DBCP Hikari CP (기본), Tomcat CP...
- auto commit, pool size와 같은 설정을 할 수 있음
1) MySQL 커넥터 의존성 추가
2) MySQL용 Datasource 설정
만약 이게 없으면 인 메모리 데이터베이스로 작동함
spring.datasource.url = jdbc:mysql://localhost:3306/springboot?useSSL=false&serverTimezone=UTC spring.datasource.username = root spring.datasource.password = verylonglongpassworD!
3) Runner 작성
@Component public class MySQLRunner implements ApplicationRunner { @Autowired JdbcTemplate jdbcTemplate; @Override public void run(ApplicationArguments args) throws Exception { String sqlCreate = "CREATE TABLE USER(ID INTEGER NOT NULL," + "NAME VARCHAR(255)," + "PRIMARY KEY(ID))"; String sqlInsert = "INSERT INTO USER VALUES (1, 'hongchan')"; jdbcTemplate.execute(sqlCreate); jdbcTemplate.execute(sqlInsert); } }
MySql -> 상용으로 사용할 경우 라이선스 비용 + 소스코드 공개 의무 있음
MariaDB -> 소스코드 공개 의무 있음
PostgreSQL -> 의무x
2. PostgrSQL 설정하기
- docker 실행
docker run -p 5432:5432 -e POSTGRES_PASSWORD=pass -e POSTGRES_USER=hongchan -e POSTGRES_DB=springboot --name postgres_boot -d postgres
- 컨테이너 인터렉티브 bash 실행
docker exec -i -t postgres_boot bash
- 사용할 데이터 베이스 이름으로 접근
su - postgres psql -U hongchan springboot
1) postgre 의존성 추가
2) 설정 변경
spring.datasource.url = jdbc:postgresql://localhost:5432/springboot?useSSL=false&serverTimezone=UTC spring.datasource.username = hongchan spring.datasource.password = pass
3) MySQL와 똑같은 코드로 실행
4) 테이블 확인
\l, \list \dt
인프런 백기선님 '스프링 부트’ 강의를 듣고 정리한 내용입니다.
728x90'Programming > Spring Boot' 카테고리의 다른 글
스프링 데이터 - 3 (스프링 부트 활용 - 9) (0) 2020.03.13 스프링 데이터 - 2 (스프링 부트 활용 - 8) (0) 2020.03.12 스프링 웹 MVC - 2 (스프링 부트 활용 - 6) (0) 2020.03.10 스프링 웹 MVC - 1 (스프링 부트 활용 - 5) (0) 2020.03.10 로깅, 테스트, Devtools (스프링 부트 활용 - 4) (0) 2020.03.09