spring-boot 没有创建 hsqldb 数据库

标签 spring hibernate spring-mvc spring-boot spring-data-jpa

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

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

# 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

我的 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>

我的主要类(class)是:

@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";
    }

}

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

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

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

谁能告诉我我做错了什么?

最佳答案

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

我会将您的所有配置移动到 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

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

关于spring-boot 没有创建 hsqldb 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26663308/

相关文章:

java - 如何支持连接池供应商特定的 DataSourceProperties 配置

spring - 如何从 Spring 检索 azure AD JWT 访问 token ?

mysql - JSON 数据不包含实体

mysql - JPA 复合键的最佳实践是什么?

Java aop ComponentScan 不工作 & AnnotationConfigApplicationContext getBean 不工作

java - Fasterxml - 如何从 json 文件中排除对象?

java - Spring NullPointerException 尽管使用了相关注释

java - 为什么我的 Spring @Autowired 字段返回 null?

java - 为什么链接不会转到 Controller Spring mvc?

Spring hibernate 手动提交