H2 Database入门

时间:2022-04-23
本文章向大家介绍H2 Database入门,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

H2 Database做为轻量级的内嵌数据库,功能十分强大,而且运行时只需要一个jar包即可,下表是官网的描述:

更详细的对比见官网页面: http://www.h2database.com/html/features.html#comparison

下面是开发入门步骤:

一、maven中添加依赖项

1         <dependency>
2             <groupId>com.h2database</groupId>
3             <artifactId>h2</artifactId>
4             <version>1.3.176</version>            
5         </dependency>    

二、Spring配置文件

a) 数据源配置

 1     <bean id="dataSource" class="org.h2.jdbcx.JdbcConnectionPool"
 2         destroy-method="dispose">
 3         <constructor-arg>
 4             <bean class="org.h2.jdbcx.JdbcDataSource">
 5                 <!-- 内存模式 -->
 6                 <property name="URL" value="jdbc:h2:mem:test" />
 7                 <!-- 文件模式 -->
 8                 <!-- <property name="URL" value="jdbc:h2:testRestDB" /> -->                 
 9                 <property name="user" value="sa" />
10                 <property name="password" value="sa" />
11             </bean>
12         </constructor-arg>
13     </bean>

注:密码不要留空(可以根据需要修改成其它值),否则运行时会报" 用户名、密码错之类"的Error b) 初始化数据库脚本

1     <!-- 初始化数据表结构 -->
2     <jdbc:initialize-database data-source="dataSource"
3         ignore-failures="ALL">
4         <jdbc:script location="classpath:database/h2/create-table.sql" />
5         <jdbc:script location="classpath:database/h2/import-data.sql" />
6     </jdbc:initialize-database>

配置这个以后,每次应用启动前,会先执行create-table.sql,然后再执行import-data.sql,十分方便测试前,先初始化db环境

c) hibernate支持

 1     <bean id="sessionFactory"
 2         class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
 3         <property name="dataSource" ref="dataSource" />
 4         <property name="packagesToScan">
 5             <list>
 6                 <value>com.cnblogs.yjmyzz.entity</value>
 7             </list>
 8         </property>
 9         <property name="mappingLocations">
10             <list>
11                 <value>classpath*:hibernate/**/*.hbm.xml</value>
12             </list>
13         </property>
14         <property name="hibernateProperties">
15             <props>
16                 <prop key="hibernate.dialect">org.hibernate.dialect.H2Dialect</prop>
17                 <!-- <prop key="current_session_context_class">thread</prop> -->
18                 <prop key="hibernate.format_sql">true</prop>
19                 <prop key="hibernate.show_sql">true</prop>
20                 <prop key="hibernate.use_sql_comments">true</prop>
21                 <prop key="hibernate.max_fetch_depth">3</prop>
22                 <prop key="hibernate.jdbc.batch_size">20</prop>
23                 <prop key="hibernate.jdbc.fetch_size">20</prop>
24                 <prop key="hibernate.cache.use_second_level_cache">false</prop>
25             </props>
26         </property>
27     </bean>

关键是16行,数据库方言的设置

d)mybatis分页插件设置

 1     <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
 2         <property name="dataSource" ref="dataSource" />
 3         <property name="configLocation" value="classpath:mybatis-config.xml"></property>
 4         <property name="typeAliasesPackage" value="com.cnblogs.yjmyzz.entity"></property>
 5         <property name="mapperLocations" value="classpath:mybatis/**/*.xml"></property>
 6         <property name="plugins">
 7             <list>
 8                 <bean
 9                     class="com.github.miemiedev.mybatis.paginator.OffsetLimitInterceptor">
10                     <property name="dialectClass"
11                         value="com.github.miemiedev.mybatis.paginator.dialect.H2Dialect"></property>
12                 </bean>
13             </list>
14         </property>
15     </bean>

关键是11行,方言的设置

三、代码测试:

 1     @Test
 2     public void testConnH2() throws SQLException, IOException {
 3         ApplicationContext ctx = new ClassPathXmlApplicationContext(
 4                 "spring-datasource.xml");
 5         OrderMapper orderMapper = ctx.getBean(OrderMapper.class);
 6         List<TOrder> orders = orderMapper.getAllOrder();
 7         for (TOrder o : orders) {
 8             System.out.println(o.getClientname());
 9         }
10         ((ClassPathXmlApplicationContext) ctx).close();
11 
12     }

上面演示了mybatis结合H2的使用示例

四、控制台界面

H2还提供了一个可视化界面

Windows开始菜单->H2->H2 console,点击connect连接就行了

有不熟悉的函数啥的,直接在SQL输入区,输入 help,然后run,下面就有帮助信息 

完整的示例代码下载  (基于struts2的rest-plugin showcase,增加了mybatis3 + hibernate4 + spring4 + velocity支持)