스프링 데이터
SQL DB NoSQL 인메모리 데이터베이스 지원 Redis (Key/Value) DataSource 설정 MongoDB(Document) DBCP 설정 Neo4J(Graph) JDBC 사용 스프링 데이터 JPA 사용 jOOQ 사용하기 데이터베이스 초기화 데이터베이스 마이그레이션 툴 연동하기
스프링 부트가 지원하는 인메모리 데이터베이스
- H2
- HSQL
- Derby
Spring-JDBC가 클래스패스에 있으면 자동 설정이 필요한 DataSource와 JdbcTemplate 빈을 설정해준다.
DataSourceAutoConfiguration
, JdbcTemplateAutoConfiguration
두 자동 설정 Bean 확인@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);
}
}
}
인메모리 데이터베이스 기본 연결 정보 확인
System.out.println(connection.getMetaData().getURL());
System.out.println(connection.getMetaData().getUserName());
User 테이블 생성 쿼리 실행
spring-boot-devtools 추가
application.properties) spring.h2.console.enabled=true
spring.h2.console.enabled=true
application.properties 파일을 수정하고 http://localhost:8080/h2-console 에서 H2 콘솔에 접속해보자
DBCP는 DB와 커넥션을 맺고 있는 객체를 관리하는 역할을 한다.
JDBC (Java에서 DB 연결을 위한 인터페이스)만을 사용할 경우 다음과 같은 단계를 거쳐야한다.
여기서 1, 2 번은 같은 작업을 반복하기 때문에 비효율적이다. 이 부분을 효율적으로 처리하도록 바꾸는 것이 DBCP의 역할이다. DBCP가 애플리케이션 성능의 핵심적인 역할을한다.
spring.datasource.hikari.maximum-pool-size=10
spring.datasource.DBCP이름
.DBCP설정값