2014-10-30 3 views
1

현재 스프링 프로젝트에서 spring-jpa와 함께 spring-boot를 사용하여 HSQLDb 데이터베이스를 만들고 관리합니다. 이 종속성이spring-boot가 hsqldb 데이터베이스를 생성하지 않습니다.

# 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 파일 :

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

} 
:

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

내 주요 클래스 즉

나는 내 프로젝트에서 너를 폴더 src/main/resourceshibernate.properties

응용 프로그램을 실행하면 콘솔에서 볼 수 있습니다.

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 속성에 정의 된 경로에 생성되지 않습니다.

내가 뭘 잘못하고 있다고 말할 수 있습니까?

+3

왜 아직도 스프링 부트를 사용하지 않으 시렵니까? 당신은 단지 일을 더 어렵게 만들고 있습니다. 그것은 당신이 물어 보는 모든 질문에서 반복되는 주제입니다. 프레임 워크를 프레임 워크 주위 또는 프레임 워크에 대해 작동하지 마십시오. –

+0

어떻게 그렇게? 데이터베이스에 대한 액세스를 관리하기 위해 spring-boot를 사용하고 있습니다. 내가 여기에 올린 코드가 보이니? –

+2

당신은 hibernate 용이고 Spring Boot에 의해 행복하게 무시되는 hiberate.properties를 사용하고있다. 직접 모든 것을 수동으로 구성하고 있습니다. 스프링 부트는'hibernate.properties'를 읽지 않습니다. 최대 절전 모드는 그것을 읽습니다. –

답변

6

구성을 관리하기 위해 스프링 부트를 사용하는 것이 더 좋을 것입니다. 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 클래스로 구성 할 때 작동한다.) –

+5

봄 부팅은 hibernate.properties를 찾지 않습니다. 최대 절전 모드는 않습니다. 로그 출력에서 ​​질문에 포함 된 것을 볼 수 있습니다. application.properties에 설정을 넣으면 Spring Boot는 당신을 위해 설정을하고 자신이해야하는 설정의 양을 줄인다. 합리적인 기본값으로 자동으로 설정하는 것에 관심이없고, 수동으로 모든 것을 설정하는 것을 선호한다면, Spring Boot를 사용하는 주요 이유 중 하나를 놓치고있는 것입니다. –

+1

이 스레드는 조금 오래되었지만 여전히 관련이 있습니다. Spring에 파일 데이터베이스를 생성시키고 메모리 내에서 사용하도록 url과 username 속성을 추가했습니다. 그것은 testdb를 생성하지만 ... 그것을 사용하지는 않습니다. –