Organizational Research By

Surprising Reserch Topic

startup script to create a schema in hsqldb


startup script to create a schema in hsqldb  using -'hibernate,spring,hsqldb'

I am attempting to use an in-memory database to mock out a teradata database.  I need to create a schema before the tables are built, however, it is giving me fits.  

I am using Spring and have lots of database interaction with import.sql, however, this executes after Hibernate has created all the tables.  I have attempted to use the .script file that HSQLDB is supposed to read, but I think when you use an in-memory database that doesn't work.  I have moved the files around a bit and nothing seems to hit.

Anyone figured out how to create a schema on startup for an in-memory HSQLDB database?
    

asked Oct 19, 2015 by amit.gupta
0 votes
6 views



Related Hot Questions

2 Answers

0 votes

If you run your script this way...


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 " rel="nofollow" target="_blank">http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd">



         
   

...then it is executed before Hibernate does its initialization stuff.


I have tested it again, especially for you. It is run before Hibernate creates the tables. See this log (running the script is in the first 3 lines, Hibernate in the last ones):

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
answered Oct 19, 2015 by nikhilapatil
0 votes

You can use a file: database with all data in memory and without any change written by your test. This should serve your purpose.

First create the database schema with the URL jdbc:hsqldb:file:initdata and perform SHUTDOWN. Then add files_readonly=true to the initdata.properties file or alternatively use the URL below:

jdbc:hsqldb:file:initdata;files_readonly=true

When your tests run against this database, nothing is written to database files and all data is in memory.

answered Oct 19, 2015 by ajit.chavhan

...