2017-01-20 2 views
0

Мне нужно перенести мою базу данных приложений Spring из MySql в базу данных HSQL. Я сконфигурировал данные hsql db в своем XML-файле и смог запустить файл sql и успешно подключиться к нему. Услышьте проблему, когда я перезапускаю мой tomcat-сервер, создается новая база данных и удаляется старый db. Я ищу все данные, которые хранятся в моих таблицах. Как я могу создать db для HSQL только один раз во время развертывания войны или только один раз для перезапуска tomcat.Создайте базу данных hsqldb только один раз для развертывания войны

Услышь мой конфигурационный файл:

<beans xmlns="http://www.springframework.org/schema/beans" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns:tx="http://www.springframework.org/schema/tx" 
     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/tx 
     http://www.springframework.org/schema/tx/spring-tx-3.0.xsd 
     http://www.springframework.org/schema/jdbc 
     http://www.springframework.org/schema/jdbc/spring-jdbc-4.1.xsd"> 


    <jdbc:embedded-database id="dbcpDataSource" type="HSQL"> 
     <jdbc:script location="classpath:schema.sql"/> 
</jdbc:embedded-database> 

<tx:annotation-driven/> 
     <bean class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> 
     <property name="driverClassName" value="org.hsqldb.jdbcDriver"/> 
     <property name="url" value="jdbc:hsqldb:mem:test"/> 
     <property name="username" value="sa"/> 
     <property name="password" value=""/> 
     <property name="maxActive" value="100000"/> 
     <property name="maxIdle" value="30"/> 
     <property name="maxWait" value="16000"/> 
     <property name="minIdle" value="0"/> 
</bean>  
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> 
     <property name="dataSource" ref="dbcpDataSource"/> 
     <property name="packagesToScan" value="com.design.model"/> 
      <property name="hibernateProperties"> 
      <props> 
       <prop key="hibernate.hbm2ddl.auto">update</prop> 
       <prop key="hibernate.dialect">org.hibernate.dialect.HSQLDialect</prop> 
       <prop key="hibernate.show_sql">true</prop> 
       <prop key="hibernate.generate_statistics">true</prop> 
       <prop key="hibernate.current_session_context_class">thread</prop> 
      </props> 
     </property> 
     <property name="exposeTransactionAwareSessionFactory"><value>false</value></property> 

    </bean> 
<bean id="transactionManager" 
      class="org.springframework.orm.hibernate3.HibernateTransactionManager"> 
     <property name="sessionFactory" ref="sessionFactory"/> 
    </bean> 
</beans> 

ответ

0

Используйте сервер HSQLDB вне вашего веб-приложения с мем: база данных с именем memdb. См. http://hsqldb.org/doc/guide/listeners-chapt.html#lsc_server_props и подключитесь к этому серверу с помощью <property name="url" value="jdbc:hsqldb:hsql://localhost/memdb"/>. Данные остаются до закрытия внешнего сервера.

+0

Я использовал даже в конфигурации памяти. Мое требование - перезагрузка внешнего сервера, а также моя база данных не должна создаваться. Его нужно создать только один раз (в первый раз, когда мы разворачиваем войну) – Navyah

+0

В этом случае используйте базу данных «file:» на сервере, чтобы сохранить данные. – fredt

+0

Даже после использования файла, он дает ту же проблему. <свойство name = "url" value = "jdbc: hsqldb: c: \ javasrc \ hsqldb-dev: test; ifexists = true; create = false" /> – Navyah

Смежные вопросы