1. Spring Boot에서 지원하는 인-메모리 데이터베이스
- H2
- HSQL
- Derby
H2 의존성이 클래스패스에 들어있고 아무런 데이터 소스 설정을 하지 않으면
스프링 부트는 자동으로 인메모리 데이터베이스를 설정해줌
2. DataSource, JdbcTemplate
- Spring-JDBC가 클래스패스에 있으면 자동 설정이 필요한 빈을 설정해줌
spring-boot-starter-jdbc 의존성이 있으면 DataSource, JdbcTemplate 빈이 자동 설정됨
@Autowired로 DataSource, JdbcTemplate 주입받을 수 있음
org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration,\
org.springframework.boot.autoconfigure.jdbc.JdbcTemplateAutoConfiguration,\
3. 인-메모리 데이터베이스 기본 연결 정보
- DataSourceProperties에서 확인
① URL = 랜덤값 or "testdb"
generateUniqueName default 값이 true여서 랜덤값
false이면 "testdb"
spring.datasource.generate-unique-name=false
② username = "sa"
③ password = ""
# H2Runner
@Component
public class H2Runner implements ApplicationRunner {
@Autowired
DataSource dataSource;
@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);
}
}
}
-> connection이라는 resource를 block 내에서 사용하고, block 안에서 무슨 문제가 생기든 꼭 정리를 해줌
-> 명시적으로, finally block을 써서 정리(connection.close())해줄 필요없음
4. H2 콘솔 사용 방법
- spring-boot-devtools 의존성 추가하거나
- spring.h2.console.enabled=true 추가
- /h2-console로 접속 (이 path도 바꿀 수 있음)
-> URL = "jdbc:h2:mem:testdb", User Name = "sa", Password = ""
-> USER 테이블 생성 확인 가능
5. JdbcTemplate
- 빈으로 주입받아 사용 가능
- 훨씬 간결하게 sql 사용 가능
- resource 반납처리가 잘되어 있어서 안전함
- 가독성이 높은 에러메시지 확인 가능
jdbcTemplate.execute("INSERT INTO USER VALUES(1, 'hhlin')");
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8/dashboard
스프링 부트 개념과 활용 - 인프런 | 강의
스프링 부트의 원리 및 여러 기능을 코딩을 통해 쉽게 이해하고 보다 적극적으로 사용할 수 있는 방법을 학습합니다., - 강의 소개 | 인프런...
www.inflearn.com
https://github.com/mindock/spring-boot-practice/wiki/7%EC%A3%BC%EC%B0%A8-%EC%8A%A4%ED%84%B0%EB%94%94
GitHub - mindock/spring-boot-practice
Contribute to mindock/spring-boot-practice development by creating an account on GitHub.
github.com
'Java > Spring Boot' 카테고리의 다른 글
[Spring Boot] Postgre SQL (0) | 2022.04.10 |
---|---|
[Spring Boot] MySQL 설정하기 (0) | 2022.04.10 |
[Spring Boot] CORS (0) | 2022.04.03 |
[Spring Boot] Spring HATEOAS (0) | 2022.04.03 |
[Spring Boot] ExceptionHandler (0) | 2022.04.03 |