2014-10-30 125 views
1

在我当前的spring项目中,我开始使用spring-jpa的spring-boot来创建和管理一个HSQLDb数据库。spring-boot没有创建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 

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

我的主要类是:

@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定义的路径中没有创建数据库。

ANYONE能告诉我我做错了什么吗?

+3

为什么你仍然试图不使用Spring Boot?你只是让自己变得更加困难。这是您提出的所有问题中反复出现的主题。与框架协作,而不是围绕或违背框架。 – 2014-10-31 07:29:58

+0

怎么样?我正在使用spring-boot来管理对数据库的访问。你看到我在这里发布的代码了吗? – 2014-10-31 11:21:36

+2

您正在使用hiberate.properties,它是用于休眠并且被Spring Boot愉快忽略的。你自己手动配置一切。 Spring Boot不读hibernate正在读取的hibernate.properties。 – 2014-10-31 11:41:31

回答

6

你会更好地使用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 

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

+0

为什么要使用application.properties?当我运行该应用程序时,spring-boot会查找名为hibernate.properties的文件。另外,如果我使用所有选项或者不使用,确实很重要?我的问题是数据库没有使用此配置创建(当我使用HibernateConfig类手动配置它时,它正在工作)。 – 2014-10-31 11:25:32

+5

Spring Boot不会查找hibernate.properties,Hibernate会。您可以从问题中包含的日志输出中看到。将配置放置在application.properties中允许Spring Boot为您配置事物,从而减少您必须执行的配置数量。如果您不希望使用合理的默认值自动配置事物,而是更喜欢手动配置所有内容,那么您错过了使用Spring Boot的主要原因之一。 – 2014-10-31 11:33:12

+1

这个线程有点旧,但仍然相关。我添加了url和username属性以便让Spring生成一个文件数据库,并且它仍然使用内存。它创建testdb ...但它没有使用它。 – 2015-11-30 15:51:56