`
墨香子
  • 浏览: 47100 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

spring中使用内存数据库(Embedded database)

阅读更多
内存数据库(Embedded database或in-momery database)具有配置简单、启动速度快、尤其是其可测试性等优点,使其成为开发过程中非常有用的轻量级数据库。在spring中支持HSQL、H2和Derby三种数据库。

下面看一下具体使用方法:
1.需要在applicationContext.xml中添加如下:
    <jdbc:embedded-database id="dataSource">
        <jdbc:script location="classpath:schema.sql"/>
        <jdbc:script location="classpath:test-data.sql"/>
    </jdbc:embedded-database>

向applicationContext.xml添加这段配置时,注意不要忘了添加上jdbc的命名空间,类路径下schema.sql中创建了项目使用的数据库表和一些约束条件等,test-data.sql中想数据库表插入了一些数据。有了该内存数据库,就不再需要那些driverClassName和url等配置了。另外还要注意,该内存数据库默认是HSQL数据库,如果要使用其他的两个数据库,修改embedded-database标签的type属性值即可。

2.下面来看一个示例,该示例使用的derby数据库。

spring配置文件:applicationContext.xml
<?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:aop="http://www.springframework.org/schema/aop"
    xmlns:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context"
    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/aop 
    http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-3.0.xsd
    http://www.springframework.org/schema/jdbc
    http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd
    http://www.springframework.org/schema/tx
    http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
    <!-- derby创建用户名和密码参考:http://www.joyzhong.com/archives/643 -->
    <!-- 使用内存数据库时,该段配置不再需要
    <bean
        id="dataSource"
        class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName">
            <value>org.apache.derby.jdbc.EmbeddedDriver</value>
        </property>
        <property name="url">
            <value>jdbc:derby:f:/zwh/db/secdb</value>
        </property>
        <property name="username">
            <value>root</value>
        </property>
        <property name="password">
            <value>root</value>
        </property>
    </bean>
     -->
     <!-- 使用内存数据库 -->
    <jdbc:embedded-database id="dataSource" type="DERBY">
        <jdbc:script location="classpath:schema.sql"/>
        <jdbc:script location="classpath:test-data.sql"/>
    </jdbc:embedded-database>
    
    <bean
        id="sessionFactory"
        class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
        <property name="dataSource">
            <ref bean="dataSource"/>
        </property>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.DerbyDialect</prop>
                <prop key="hibernate.show_sql">true</prop>
                <prop key="hibernate.format_sql">true</prop>
            </props>
        </property>
        <property name="annotatedClasses">
            <list>
                <value>zwh.spring.security.po.User</value>
                <value>zwh.spring.security.po.Role</value>
            </list>
        </property>
    </bean>
    <!-- 使用annotation的方式配置Spring Bean -->
    <context:component-scan base-package="zwh.spring.security"></context:component-scan>
    
</beans>


创建数据库表脚本:schema.sql
create table sec_user(  
 username varchar(100) primary key,  
 password varchar(255)
); 
create table sec_role(
 rolename varchar(100) primary key,
 prompt varchar(255)
);
create table sec_role_user(
 username varchar(100) not null,
 rolename varchar(100) not null,
 constraint ru_id primary key(username,rolename)
);
alter table sec_role_user add constraint fk_user foreign key(username) references sec_user(username);
alter table sec_role_user add constraint fk_role foreign key(rolename) references sec_role(rolename);


向数据库表中插入数据:test-data.sql
insert into sec_user values('admin','admin');  
insert into sec_user values('test','test');
insert into sec_role values('ROLE_USER','common user privilege');
insert into sec_role values('ROLE_ADMIN','administrator privilege');
insert into sec_role_user values('test','ROLE_USER');
insert into sec_role_user values('admin','ROLE_USER');
insert into sec_role_user values('admin','ROLE_ADMIN');


官方文档:http://static.springsource.org/spring-framework/docs/3.0.0.M4/reference/html/ch12s08.html
分享到:
评论
1 楼 endual 2013-08-15  
实在配置不出来,要是能够提供一个java工程就好了。谢谢博主。
邮箱:1019990976@qq.com

相关推荐

    spring-embedded-database:Spring嵌入式数据库示例

    $ git clone https://github.com/mkyong/spring-embedded-database $ mvn jetty:run 访问http://localhost:8080/spring-mvc-db/ ### 3。 将此项目导入Eclipse IDE $ mvn eclipse:eclipse 通过现有项目将Eclipse...

    firebird embedded 嵌入式——Spring hibernate 集成连接配置

    本文将详细介绍如何在Spring框架中集成Hibernate,并配置连接到Firebird Embedded数据库。 首先,让我们理解Spring和Hibernate的集成。Spring通过其HibernateTemplate或SessionFactoryBean提供对Hibernate的支持。...

    Embedded-database-spring-test:一个库,用于为Spring集成测试创建隔离的嵌入式数据库

    与Spring TestContext框架自动集成完全支持上下文缓存与Flyway数据库迁移工具无缝集成只需将@FlywayTest批注放置在测试类或方法上优化嵌入式数据库的初始化和清理数据库模板用于减少加载时间使用轻量级的捆绑来减小...

    spring-mvc-embedded-database:Spring MVC项目可与静态服务和H2数据库一起使用

    Spring嵌入式数据库 作为构建此项目的一部分,实现了以下内容: 创建一个springboot项目 开发和发布宁静的Web服务 使用嵌入式数据库创建和管理数据源 使用的技术 Maven的3.0 Springboot-2.2.4 Spring5.3.5 ...

    spring-boot-data-H2-embedded:带有内存数据库中H2的Spring Boot演示应用程序

    在此应用中,我使用H2内存数据库进行演示 Application.properties spring.datasource.url=jdbc:h2:mem:TEST;DB_CLOSE_DELAY=-1; spring.datasource.username=sa spring.datasource.password= spring.datasource....

    [课堂课件讲解]Java微服务实践-Spring Boot 数据库JDBC.pptx

    3. 嵌入式数据源(org.springframework.jdbc.datasource.embedded.EmbeddedDatabase):主要用于本地文件系统数据库,如HSQL、H2、Derby等。 二、事务(Transaction) 事务用于提供数据完整性,并在并发访问下确保...

    SpringH2EmbeddedDatabase:Spring、Hibernate ORM、Spring H2 嵌入式数据库。 Gradle 作为构建工具和依赖项管理。 Logback 作为日志框架。 Lombok避免锅炉板代码

    这基本上是使用 Hiberante ORM 演示 Spring 3.x Embedded 数据库功能。 这里我使用了 H2 类型的 inMemory 数据库(Spring 支持 H2、HSQL、Derby) 技术栈。 Spring 3.2.10 和事务。 Spring 嵌入式数据库,H2 类型...

    spring3.0的xsd文件.rar

    `jdbc.xsd`中的`&lt;jdbc:embedded-database&gt;`可以创建内存数据库用于测试,而`jms.xsd`则帮助我们配置JMS(Java Message Service)的连接工厂和目的地。 此外,`mvc.xsd`对于Spring MVC(Model-View-Controller)来说...

    spring-jdbc-4.2.xsd.zip

    1. `&lt;jdbc:initialize-database&gt;`:用于自动初始化数据库,例如创建表、填充数据等,常在测试环境中使用。 2. `&lt;jdbc:embedded-database&gt;`:创建一个内存中的数据库,通常用于单元测试,如HSQLDB或Derby。 3. `...

    spring5.0的全部xsd文件

    6. `jdbc.xsd`:定义了数据库操作相关的元素,如数据源(`&lt;jdbc:embedded-database&gt;`)和JdbcTemplate的配置(`&lt;bean class="org.springframework.jdbc.core.JdbcTemplate"&gt;`)。 7. `mvc.xsd`:用于Spring MVC的...

    spring-framework-4.3.4.RELEASE-schema

    在4.3.4.RELEASE中,`&lt;jdbc:initialize-database&gt;`和`&lt;jdbc:embedded-database&gt;`元素允许我们在测试环境中轻松创建和初始化数据库。同时,`&lt;tx:annotation-driven&gt;`元素则简化了事务管理的配置,通过注解即可自动...

    spring约束

    4. ** JDBC `.xsd`**:提供了对数据库访问的支持,如`&lt;jdbc:embedded-database&gt;`用于在内存中创建数据库,`&lt;jee:jndi-lookup&gt;`用于查找JNDI资源。 5. ** Transaction `.xsd`**:定义了事务管理的配置元素,如`...

    spring framework schema

    例如,`jdbc:initialize-database`元素可以用来自动创建或更新数据库表结构,`jdbc:embedded-database`则可以创建内存中的临时数据库,方便测试。 3. **JMS Schema**: `jms` schema是针对Java消息服务(JMS)的配置...

    H2 Database With Docs

    提供的“H2 Database With Docs”压缩包可能包含了H2数据库的官方文档,这些文档详细解释了H2的各种特性和使用方法,是学习和解决问题的重要参考资料。 总的来说,H2数据库以其高效、灵活和易用性,成为开发者在轻...

    hibernate和spring学习文档

    Spring提供了多种数据源配置,如BasicDataSource、EmbeddedDatabase等。选择合适的数据源并配置相关属性,如URL、用户名、密码等。 3. **SessionFactory配置** 创建SessionFactoryBean,并指定Hibernate配置文件...

    spring-framework-4.2.4.RELEASE-schema

    4.2.4.RELEASE中,Schema对这些模块的配置进行了优化,如`&lt;jdbc:embedded-database&gt;`可以轻松创建嵌入式数据库实例,`&lt;tx:annotation-driven&gt;`自动识别并处理事务注解。 5. Web MVC与Schema Spring MVC是构建Web...

    spring jdbc

    10. **配置**:在 Spring 配置文件中,可以通过 `&lt;jdbc:embedded-database&gt;` 或 `&lt;jee:jndi-lookup&gt;` 定义数据源,或者使用 Java配置类(@Configuration 和 @Bean 注解)。 通过深入了解这些知识点,开发者能够更好...

    Spring基础包的dtd(aop,jdbc,jee,jms,lang,mvc,oxm)等

    `jdbc.dtd`则与数据库操作相关,它包含诸如`&lt;jdbc:embedded-database&gt;`、`&lt;jdbc:initialize-database&gt;`等元素,便于在应用启动时创建和初始化嵌入式数据库。 `jee.dtd`涉及Java企业版(Java EE)集成,如JNDI查找、...

Global site tag (gtag.js) - Google Analytics