spring-boot不会创建hsqldb数据库

Kle*_*ota 1 spring hibernate spring-mvc spring-data-jpa spring-boot

在我目前的spring项目中,我开始使用spring-boot和spring-jpa来创建和管理HSQLDb数据库.

我hibernate.properties在src/main/resources我的项目的文件夹中有这个:

# jdbc.X
jdbc.driverClassName=org.hsqldb.jdbc.JDBCDriver
jdbc.url=jdbc:hsqldb:file:/home/kleber/.webapp/testedb
jdbc.user=sa
jdbc.pass=

# hibernate.X
hibernate.dialect=org.hibernate.dialect.HSQLDialect
hibernate.show_sql=false
hibernate.hbm2ddl.auto=create
Run Code Online (Sandbox Code Playgroud)

我的pom.xml有这个依赖项:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>org.hsqldb</groupId>
        <artifactId>hsqldb</artifactId>
    </dependency>
    <dependency>
        <groupId>jstl</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>
</dependencies>
Run Code Online (Sandbox Code Playgroud)

我的主要课程是:

@Controller
@EnableJpaRepositories
@EnableAutoConfiguration
public class Application {

    public static void main(String[] args) throws Exception {
        SpringApplication.run(Application.class, args);
    }

    @RequestMapping(value = "/signin")
    public String signin(Model model) {
        return "acesso/signin";
    }

    @RequestMapping(value = "/admin")
    public String admin(Model model) {
        return "private/admin";
    }

    @RequestMapping(value = "/")
    public String index(Model model) {
        return "public/index";
    }

}
Run Code Online (Sandbox Code Playgroud)

当我运行应用程序时,我可以在控制台中看到这个:

2014-10-30 17:58:51.708  INFO 31413 --- [           main] org.hibernate.Version                    : HHH000412: Hibernate Core {4.3.6.Final}
2014-10-30 17:58:51.713  INFO 31413 --- [           main] org.hibernate.cfg.Environment            : HHH000205: Loaded properties from resource hibernate.properties: {jdbc.url=jdbc:hsqldb:file:/home/kleber/.webapp/testedb, hibernate.dialect=org.hibernate.dialect.HSQLDialect, hibernate.show_sql=false, jdbc.user=sa, hibernate.bytecode.use_reflection_optimizer=false, hibernate.hbm2ddl.auto=create, jdbc.driverClassName=org.hsqldb.jdbc.JDBCDriver, jdbc.pass=}
2014-10-30 17:58:51.714  INFO 31413 --- [           main] org.hibernate.cfg.Environment            : HHH000021: Bytecode provider name : javassist
2014-10-30 17:58:52.089  INFO 31413 --- [           main] o.hibernate.annotations.common.Version   : HCANN000001: Hibernate Commons Annotations {4.0.5.Final}
2014-10-30 17:58:52.191  INFO 31413 --- [           main] org.hibernate.dialect.Dialect            : HHH000400: Using dialect: org.hibernate.dialect.HSQLDialect
2014-10-30 17:58:52.385  INFO 31413 --- [           main] o.h.h.i.ast.ASTQueryTranslatorFactory    : HHH000397: Using ASTQueryTranslatorFactory
2014-10-30 17:58:52.838  INFO 31413 --- [           main] org.hibernate.tool.hbm2ddl.SchemaExport  : HHH000227: Running hbm2ddl schema export
2014-10-30 17:58:52.845  INFO 31413 --- [           main] org.hibernate.tool.hbm2ddl.SchemaExport  : HHH000230: Schema export complete
Run Code Online (Sandbox Code Playgroud)

但是没有在属性定义的路径中创建数据库jdbc.url.

任何人都可以告诉我我做错了什么?

And*_*son 7

您最好使用Spring Boot来管理配置.它会将Hibernate配置传递给Hibernate,同时还为您自动创建DataSource和数据库.

我会将您的所有配置移动到src/main/resources/application.properties:

# DataSource
spring.datasource.url=jdbc:hsqldb:file:/home/kleber/.webapp/testedb
spring.datasource.username=sa

# Hibernate
spring.jpa.show-sql=false
spring.jpa.hibernate.ddl-auto=create
Run Code Online (Sandbox Code Playgroud)

我删除了一些不必要的配置.例如,driverClassNameSpring Boot 的配置将从url和空DataSource密码推断它,因为它是默认值.您可以在此处查看配置属性及其默认值的一些文档.

  • Spring Boot不会寻找hibernate.properties,Hibernate也是如此.您可以从日志输出中看到问题中包含的内容.将配置放在application.properties中允许Spring Boot为您配置内容,从而减少您必须自己完成的配置量.如果你对使用合理的默认值自动配置的东西不感兴趣,而是你更喜欢手动配置所有内容,那么你就错过了使用Spring Boot的一个主要原因. (5认同)