Spring Boot 어플리케이션과 H2 파일 데이터베이스
spring boot 어플리케이션 부팅 시 H2 데이터베이스 셋업을 하려고 합니다.application.properties에서 데이터베이스를 설정했습니다.
spring.datasource.url = jdbc:h2:file:~/testdb
spring.datasource.username = sa
spring.datasource.password = sa
spring.datasource.driverClassName = org.h2.Driver
Application.java 파일:
@Configuration
@ComponentScan
@EnableAutoConfiguration
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
CreateH2Database createH2Database = new CreateH2Database();
createH2Database.create();
}
}
CreateH2 데이터베이스자바:
public class CreateH2Database {
private Logger log = Logger.getLogger(CreateH2Database.class);
@Autowired
protected JdbcTemplate jdbcTemplate;
public void create() {
log.info("Creating H2 Database");
createUsers();
}
private void createUsers() {
log.info("Creating users table");
jdbcTemplate.execute("create table if not exists users (id serial, first_name varchar(255), last_name varchar(255))");
String[] names = "John Woo;Jeff Dean;Josh Bloch;Josh Long".split(";");
for (String fullname : names) {
String[] name = fullname.split(" ");
log.info("Inserting user record for " + name[0] + " " + name[1] + "\n");
jdbcTemplate.update(
"INSERT INTO users(first_name,last_name) values(?,?)",
name[0], name[1]);
}
}
}
응용 프로그램이 시작되면 Users 테이블이 아직 존재하지 않는 경우 Users 테이블을 만들고 테이블에 사용자를 삽입합니다.테이블이 이미 존재한다면 수정하지 않았으면 합니다.
- 저는...
NullPointerException
에jdbcTemplate.execute
. 어떻게 하면 얻을 수갑을jdbcTemplate
주입할 수혈?지금까지 본 예에서는 데이터 소스를 수동으로 작성해야 합니다.그 후 JdbcTemplate가 생성됩니다.단, 이 예의 데이터 소스는 application.properties 값을 기반으로 작성된 것으로 보입니다. - 이것이 데이터베이스 셋업에 대한 올바른 접근법입니까(즉,
CreateH2Database
(Spring Application 시작 후)다른 애플리케이션 서버에서 WAR로 애플리케이션을 실행하는 경우 이 접근법이 유효합니까?
Spring Boot을 사용하고 있기 때문에 Spring Boot의 데이터베이스 초기화 기능을 활용할 필요가 있습니다.독자적인 실장을 전개할 필요는 없습니다.
당신이 해야 할 일은 파일만 있으면schema.sql
그리고.data.sql
클래스 패스의 루트(대부분의 경우)에서/resources
). Spring Boot은 이러한 데이터베이스를 자동 검출하여 첫 번째 데이터베이스를 생성하고 두 번째 데이터베이스를 실행하여 데이터베이스를 채웁니다.
Spring Boot 문서의 이 부분을 참조하십시오.
조건부로 초기화를 실행할 필요가 있는 경우(통합 테스트를 실행하는 경우에만), 스프링 프로파일을 활용할 수 있습니다.이 경우 테스트 프로파일의 속성 파일에는
spring.datasource.initialize=true
다른 프로파일의 속성 파일에는
spring.datasource.initialize=false
언급URL : https://stackoverflow.com/questions/24603721/spring-boot-application-with-h2-file-database
'programing' 카테고리의 다른 글
제트 교차 원점 필터 (0) | 2023.03.04 |
---|---|
angular-ui-modal과 부트스트랩 $modal을 사용하여 여러 단계 마법사를 만듭니다. (0) | 2023.03.04 |
TypeScript를 사용한 react-router- (0) | 2023.03.04 |
Angular ui-router를 사용하여 상태 변경 없이 URL 쿼리 매개 변수 설정 (0) | 2023.03.04 |
WordPress에서 현재 플러그인 디렉토리를 가져오려면 어떻게 해야 합니까? (0) | 2023.03.04 |