h2 + mysql

喜夏-厌秋 提交于 2019-12-07 07:54:54

    最近在做一个项目,由于出于各种考虑(如节省数据库空间,数据同步,便于操作...),大都会在一些字段上采取保存关联ID的做法,页面展示的时候就会通过转换的方式,显示关联ID的名称。如部门,职位等。

    如何通过ID得到相关的名称:

①通过连表查询的方式,这种方法相信大伙都不会认同的。

②通过在启动时将部门,职位,这些要高频查询的的表信息加载到缓存中,每次通过查询缓存就能得到显示的名称。但个人觉得每次要在内存中遍历这次数据,而且这些部门表,职位表比较大,感觉也不是一个最佳的方式。

③通过使用内存数据库,在启动时将mysql中的表加载在内存数据库中,查询的时候通过ID查询内存数据库,这比②少了在内存中遍历这个环节,虽然这会涉及连接内存数据库等开销,但感觉没必要再比较下去。

由于本项目只使用内存数据库的查询功能,且是适合windows平台部署,最终内存数据选择为:H2 。

最终:

如何整合h2到项目中呢:只要在项目中加入h2的开发jar包,就可以了,不需要h2的service端(若不是使用h2的内存模式,则要下载service端并进行启动相关服务)。

注意:

To keep the database open, add ;DB_CLOSE_DELAY=-1 to the database URL. 

为了让内存数据库一直开着,必须要在数据库地址后面加上;DB_CLOSE_DELAY=-1

若是数据库地址没有具体指定数据库名称则每次连接都会创建一个新数据db,so 应该在db url 后面指定具体名称,如 jdbc:h2:mem:db1

项目已经在使用,暂时能满足需求,并还没有出什么问题。

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!