2014-10-30 117 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