ibatis和HSQL采用in-process模式
来源:互联网 发布:monkey社交软件下载 编辑:程序博客网 时间:2024/06/07 01:10
最近做一个简单的桌面应用,打算用小型的HSQL做数据存储,但是想学习一下IBATIS就用了这个框架,但是折腾了我一个下午呢。
来看看问题吧:
HSQL在in-process模式下,是随应用的JVM启动的,而且必须在同一个JVM中。平时的JDBC只用使用以下代码就能连接HSQL。
的确很简单,但是我们会发现一个问题,在数据库插入后直接关闭连接,所插入的数据并没有生成相应的脚本放入.script中,而是丢失了。
查阅了一些资料,只要在url后加上 shutdown=true 就能写入。代码如下:
为什么呢?
shutdown 这个属性是让HSQL知道当HSQL的所有连接都关闭的时候,HSQL就将内存中的东东写成脚本,持久化到硬盘上。
现在我们加上IBATIS,SqlMapConfig.xml配置如下:
但是一运行程序,结果呢?
还是不行,HSQL并没有把内存中的东西写进脚本。
又得查半天资料,我发现HSQL可以直接写 XXX.script文件
而且其中的有个属性很重要,WRITE_DELAY
这是干什么的呢?
看字面的意思我们就知道是写的时候延迟。
所以我就把它改成
SET WRITE_DELAY FALSE
这样又是什么意思呢
就是说不延迟
这样再运行看看,果然可以了。
那这又是为什么呢?
我就来说说完粗浅的见解:
HSQL 是把所有DB的操作记录在内存里,然后通过这个属性配置的时间,周期的将数据同步到文件里,然而在同步以前当机了,那么所有数据都丢失了。
当然,还有一种情况,就是HSQL的服务没有shutdown就关闭了,也就是和上述类似的情况。
HSQL的shutdown在关闭服务前会将所有内存中的数据同步到文件里。
所以第一种方法才能奏效。
- ibatis和HSQL采用in-process模式
- ibatis和HSQL采用in-process模式
- HyperSql(hsql)的in-process模式
- HSQL简介和使用
- iBATIS&Spring合奏(四)--设计模式in iBATIS
- hsql
- hsql
- hsql
- iBATIS In Action:iBATIS的安装和配置
- iBATIS In Action:iBATIS的安装和配置
- iBATIS In Action:序言和目录
- ibatis in
- ibatis in Spring 和 Hibernate in Spring 的区别
- Hive hsql使用注意事项和限制
- 用 WSAD5.0和SQLServer2K采用Meet-in-Middle模式开发CMP实体Bean及其完整客户端(下篇:客户端的开发和性能优化)
- ibatis的#和$的区别、like、in的用法
- 【引用】ibatis的#和$的区别、like、in的用法
- ibatis的#和$的区别、like、in的用法
- 栈——括号匹配
- HttpCient简单应用
- Vector Quantization
- linux RHEL 修改网卡名称
- android源码目录结构
- ibatis和HSQL采用in-process模式
- java对象创建过程/初始化顺序
- 在左右相差为1数组中查找一个数
- C#中Invoke的用法(转)
- Linux Socket编程(不限Linux)
- Jquery 改变一个单个 属性和多个属性。
- poj 4019 Immediate Delivery
- java反射机制
- VC++ Sleep函数原理及Sleep(0)的使用(文章较深入但通俗易懂)