Java 带spring和hibernate的hsqldb启动时数据文件中的数据在哪里

Java 带spring和hibernate的hsqldb启动时数据文件中的数据在哪里,java,spring,hibernate,hsqldb,Java,Spring,Hibernate,Hsqldb,有很多这样的例子,这是它们的混合体。这是一个使用类路径应用程序上下文的控制台应用程序。这是少量数据,但我想知道,测试运行时数据文件中的记录在哪里 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans>

有很多这样的例子,这是它们的混合体。这是一个使用类路径应用程序上下文的控制台应用程序。这是少量数据,但我想知道,测试运行时数据文件中的记录在哪里

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
    "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>

        <bean id="productDao" class="com.practice.HibernateProductDaoImpl">
            <property name="sessionFactory" ref="sessionFactory" />
        </bean>

        <bean id="customerDao" class="com.practice.HibernateCustomerDaoImpl">
            <property name="sessionFactory" ref="sessionFactory" />
        </bean>

    <!-- HSQLDB Data Source -->        
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value="org.hsqldb.jdbcDriver" />
        <property name="url" value="jdbc:hsqldb:file:naturalfoods" />
        <property name="username" value="sa" />
        <property name="password" value="" />
        <property name="initialSize" value="5" />
        <property name="maxActive" value="10" />
        <property name="poolPreparedStatements" value="true" />
        <property name="maxOpenPreparedStatements" value="10" />
    </bean> 

    <!-- Hibernate Session Factory  -->
    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="annotatedClasses">
            <list>
                <value>com.practice.Category</value>
                <value>com.practice.Product</value>
            </list>
        </property>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.HSQLDialect</prop>
                <prop key="hibernate.hbm2ddl.auto">update</prop>
                <prop key="hibernate.show_sql">true</prop>
                <prop key="hibernate.connection.autocommit">true</prop>
            </props>
        </property>
    </bean>

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

CREATE SCHEMA PUBLIC AUTHORIZATION DBA

CREATE MEMORY TABLE CATEGORY(CATEGORY_ID BIGINT GENERATED BY DEFAULT AS IDENTITY(START WITH 1) NOT NULL 
PRIMARY KEY,CATEGORY_NAME VARCHAR(255))


CREATE MEMORY TABLE PRODUCT(PRODUCT_ID BIGINT GENERATED BY DEFAULT AS IDENTITY(START WITH 1) NOT NULL 
PRIMARY KEY,PRODUCT_NAME VARCHAR(255),PRODUCT_PRICE DOUBLE,PRODUCT_DESCRIPTION VARCHAR(255),
PRODUCT_INVENTORY INTEGER)

ALTER TABLE CATEGORY ALTER COLUMN CATEGORY_ID RESTART WITH 6

ALTER TABLE PRODUCT ALTER COLUMN PRODUCT_ID RESTART WITH 7

CREATE USER SA PASSWORD ""

GRANT DBA TO SA

SET WRITE_DELAY 10

SET SCHEMA PUBLIC
然后是naturalfoods.data

INSERT INTO PRODUCT VALUES(1,'Apple',0.25E0,'Food',10)

INSERT INTO PRODUCT VALUES(2,'Orange',0.5E0,'Food',10)

INSERT INTO PRODUCT VALUES(3,'Banana',0.75E0,'Food',0)

INSERT INTO PRODUCT VALUES(4,'Peas',1.5E0,'Food',10)

INSERT INTO PRODUCT VALUES(5,'Carrots',1.0E0,'Food',10)

INSERT INTO CATEGORY VALUES(1,'Fruit')

INSERT INTO CATEGORY VALUES(2,'Vegetables')

INSERT INTO CATEGORY VALUES(3,'Meat')

INSERT INTO CATEGORY VALUES(4,'Dairy')
下面是一些log4j输出:

name productDescription
name productInventory
name productName
name productPrice
[2014-02-24 15:34:22,512] [DEBUG] [org.hibernate.SQL] [select product0_.PRODUCT_ID as PRODUCT1_1_0_, product0_.PRODUCT_DESCRIPTION as PRODUCT2_1_0_, product0_.PRODUCT_INVENTORY as PRODUCT3_1_0_, product0_.PRODUCT_NAME as PRODUCT4_1_0_, product0_.PRODUCT_PRICE as PRODUCT5_1_0_ from PRODUCT product0_ where product0_.PRODUCT_ID=?]
Hibernate: select product0_.PRODUCT_ID as PRODUCT1_1_0_, product0_.PRODUCT_DESCRIPTION as PRODUCT2_1_0_, product0_.PRODUCT_INVENTORY as PRODUCT3_1_0_, product0_.PRODUCT_NAME as PRODUCT4_1_0_, product0_.PRODUCT_PRICE as PRODUCT5_1_0_ from PRODUCT product0_ where product0_.PRODUCT_ID=?
[2014-02-24 15:34:22,552] [DEBUG] [org.hibernate.SQL] [insert into PRODUCT (PRODUCT_DESCRIPTION, PRODUCT_INVENTORY, PRODUCT_NAME, PRODUCT_PRICE, PRODUCT_ID) values (?, ?, ?, ?, ?)]
Hibernate: insert into PRODUCT (PRODUCT_DESCRIPTION, PRODUCT_INVENTORY, PRODUCT_NAME, PRODUCT_PRICE, PRODUCT_ID) values (?, ?, ?, ?, ?)
[2014-02-24 15:34:23,925] [DEBUG] [org.hibernate.SQL] [select product0_.PRODUCT_ID as PRODUCT1_1_, product0_.PRODUCT_DESCRIPTION as PRODUCT2_1_, product0_.PRODUCT_INVENTORY as PRODUCT3_1_, product0_.PRODUCT_NAME as PRODUCT4_1_, product0_.PRODUCT_PRICE as PRODUCT5_1_ from PRODUCT product0_]
Hibernate: select product0_.PRODUCT_ID as PRODUCT1_1_, product0_.PRODUCT_DESCRIPTION as PRODUCT2_1_, product0_.PRODUCT_INVENTORY as PRODUCT3_1_, product0_.PRODUCT_NAME as PRODUCT4_1_, product0_.PRODUCT_PRICE as PRODUCT5_1_ from PRODUCT product0_
[2014-02-24 15:34:24,005] [DEBUG] [org.hibernate.SQL] [select category0_.CATEGORY_ID as CATEGORY1_0_, category0_.CATEGORY_NAME as CATEGORY2_0_ from CATEGORY category0_]
Hibernate: select category0_.CATEGORY_ID as CATEGORY1_0_, category0_.CATEGORY_NAME as CATEGORY2_0_ from CATEGORY category0_
com.practice.Product@1784427

这不是extact数据和脚本,而是close。我只是想知道为什么只有一种产品?

我希望只有一种产品。你只有一次测试。该测试只运行一次
@Before
方法,该方法创建并保存一个且仅保存一个产品


如果您在多次测试运行后发现只有一个产品,那么您可能希望更改DB脚本以不创建
内存
表。

naturalfoods.data和naturalfoods.script是如何运行的?因此我将此更改为将*.script和*.data合并为*.script。hsqldb启动的关键是将“file”选项设置为mem,这是另一个选项。我将naturalfoods.script放在src/main/resources/下。我认为hsqldb在启动时会运行文件中的所有SQL命令,包括insert语句。所以我原以为date会在最初的阅读中出现。那么你能让它工作了吗,还是还在尝试呢?我试着在插入之后添加commit。没有效果。我读过关于创建文本表的设置,与创建内存表相反,但使用csv文件是我的理解。我认为url选项的“mem”和“file”意味着“file”将读取初始化脚本并执行crud操作。因此我认为我误读了原始设置,错过了“mem”保证表为空的细节。如果希望数据在多个会话后出现在表中,请使用“文件”。
name productDescription
name productInventory
name productName
name productPrice
[2014-02-24 15:34:22,512] [DEBUG] [org.hibernate.SQL] [select product0_.PRODUCT_ID as PRODUCT1_1_0_, product0_.PRODUCT_DESCRIPTION as PRODUCT2_1_0_, product0_.PRODUCT_INVENTORY as PRODUCT3_1_0_, product0_.PRODUCT_NAME as PRODUCT4_1_0_, product0_.PRODUCT_PRICE as PRODUCT5_1_0_ from PRODUCT product0_ where product0_.PRODUCT_ID=?]
Hibernate: select product0_.PRODUCT_ID as PRODUCT1_1_0_, product0_.PRODUCT_DESCRIPTION as PRODUCT2_1_0_, product0_.PRODUCT_INVENTORY as PRODUCT3_1_0_, product0_.PRODUCT_NAME as PRODUCT4_1_0_, product0_.PRODUCT_PRICE as PRODUCT5_1_0_ from PRODUCT product0_ where product0_.PRODUCT_ID=?
[2014-02-24 15:34:22,552] [DEBUG] [org.hibernate.SQL] [insert into PRODUCT (PRODUCT_DESCRIPTION, PRODUCT_INVENTORY, PRODUCT_NAME, PRODUCT_PRICE, PRODUCT_ID) values (?, ?, ?, ?, ?)]
Hibernate: insert into PRODUCT (PRODUCT_DESCRIPTION, PRODUCT_INVENTORY, PRODUCT_NAME, PRODUCT_PRICE, PRODUCT_ID) values (?, ?, ?, ?, ?)
[2014-02-24 15:34:23,925] [DEBUG] [org.hibernate.SQL] [select product0_.PRODUCT_ID as PRODUCT1_1_, product0_.PRODUCT_DESCRIPTION as PRODUCT2_1_, product0_.PRODUCT_INVENTORY as PRODUCT3_1_, product0_.PRODUCT_NAME as PRODUCT4_1_, product0_.PRODUCT_PRICE as PRODUCT5_1_ from PRODUCT product0_]
Hibernate: select product0_.PRODUCT_ID as PRODUCT1_1_, product0_.PRODUCT_DESCRIPTION as PRODUCT2_1_, product0_.PRODUCT_INVENTORY as PRODUCT3_1_, product0_.PRODUCT_NAME as PRODUCT4_1_, product0_.PRODUCT_PRICE as PRODUCT5_1_ from PRODUCT product0_
[2014-02-24 15:34:24,005] [DEBUG] [org.hibernate.SQL] [select category0_.CATEGORY_ID as CATEGORY1_0_, category0_.CATEGORY_NAME as CATEGORY2_0_ from CATEGORY category0_]
Hibernate: select category0_.CATEGORY_ID as CATEGORY1_0_, category0_.CATEGORY_NAME as CATEGORY2_0_ from CATEGORY category0_
com.practice.Product@1784427