복붙노트

[SPRING] HSQLDB에서 스키마를 생성하는 시작 스크립트

SPRING

HSQLDB에서 스키마를 생성하는 시작 스크립트

나는 메모리 데이터베이스를 사용하여 테라 데이타 데이터베이스를 조롱하고있다. 테이블을 작성하기 전에 스키마를 작성해야하지만 필자에게 적합합니다.

Spring을 사용하고 import.sql과 많은 데이터베이스 상호 작용을하지만, 이것은 Hibernate가 모든 테이블을 생성 한 후에 실행됩니다. HSQLDB가 읽어야하는 .script 파일을 사용하려고 시도했지만, 작동하지 않는 메모리 내장 데이터베이스를 사용할 때 생각합니다. 파일을 조금 옮겼지만 아무것도 치는 것 같지 않습니다.

누구나 메모리 내 HSQLDB 데이터베이스를 시작할 때 스키마를 생성하는 방법을 알아 냈습니까?

해결법

  1. ==============================

    1.이 방법으로 스크립트를 실행하면 ...

    이 방법으로 스크립트를 실행하면 ...

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jdbc="http://www.springframework.org/schema/jdbc"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
            http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd">
    
    
    <jdbc:embedded-database id="dataSource" type="H2" >
        <jdbc:script location="classpath:my.sql" />     
    </jdbc:embedded-database>   
    

    ... 그것은 Hibernate가 초기화 작업을하기 전에 실행된다.

    나는 그것을 특히 다시 시험해 보았습니다. 그것은 Hibernate가 테이블을 생성하기 전에 실행된다. 이 로그를 보아라 (스크립트를 실행하는 것은 처음 세 라인에 있고, 마지막 라인은 Hibernate이다) :

    2011-11-01 19:10:08,380 [main] INFO  org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseFactory - Creating embedded database 'dataSource'
    2011-11-01 19:10:08,583 [main] INFO  org.springframework.jdbc.datasource.init.ResourceDatabasePopulator - Executing SQL script from class path resource [my.sql]
    2011-11-01 19:10:08,683 [main] INFO  org.springframework.jdbc.datasource.init.ResourceDatabasePopulator - Done executing SQL script from class path resource [my.sql] in 100 ms.
    2011-11-01 19:10:08,683 [main] INFO  org.springframework.context.support.GenericApplicationContext - Bean 'dataSource' of type [class org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseFactoryBean] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
    2011-11-01 19:10:08,683 [main] INFO  org.springframework.context.support.GenericApplicationContext - Bean 'dataSource' of type [class org.springframework.jdbc.datasource.SimpleDriverDataSource] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
    2011-11-01 19:10:08,700 [main] INFO  org.springframework.context.support.GenericApplicationContext - Bean 'org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter#35712651' of type [class org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
    2011-11-01 19:10:08,717 [main] INFO  org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean - Building JPA container EntityManagerFactory for persistence unit 'testH2DbPersistenceUnit'
    2011-11-01 19:10:08,854 [main] INFO  org.hibernate.annotations.common.Version - Hibernate Commons Annotations 3.2.0.Final
    2011-11-01 19:10:08,859 [main] INFO  org.hibernate.cfg.Environment - Hibernate 3.6.7.Final
    2011-11-01 19:10:08,861 [main] INFO  org.hibernate.cfg.Environment - hibernate.properties not found
    ...
    2011-11-01 19:10:10,313 [main] INFO  org.hibernate.tool.hbm2ddl.SchemaUpdate - Running hbm2ddl schema update
    2011-11-01 19:10:10,313 [main] INFO  org.hibernate.tool.hbm2ddl.SchemaUpdate - fetching database metadata
    2011-11-01 19:10:10,315 [main] INFO  org.hibernate.tool.hbm2ddl.SchemaUpdate - updating schema
    
  2. ==============================

    2.file : 데이터베이스를 메모리의 모든 데이터와 함께 사용할 수 있으며 테스트에 변경 사항을 기록하지 않아도됩니다. 이것은 당신의 목적에 부합해야합니다.

    file : 데이터베이스를 메모리의 모든 데이터와 함께 사용할 수 있으며 테스트에 변경 사항을 기록하지 않아도됩니다. 이것은 당신의 목적에 부합해야합니다.

    먼저 jdbc : hsqldb : file : initdata URL로 데이터베이스 스키마를 작성하고 SHUTDOWN을 수행하십시오. 그런 다음 files_readonly = initdata.properties 파일에 true 또는 아래 URL을 사용하십시오.

    jdbc:hsqldb:file:initdata;files_readonly=true
    

    테스트가이 데이터베이스에 대해 실행되면 데이터베이스 파일에 아무 것도 기록되지 않고 모든 데이터가 메모리에 저장됩니다.

  3. from https://stackoverflow.com/questions/7968067/startup-script-to-create-a-schema-in-hsqldb by cc-by-sa and MIT license