JsonDB:一个基于 Java 的开源数据库
内存占用小,嵌入在 Java 程序中运行,
提供在名称和语义上与 Spring Data for MongoDB 非常相似的 API,
支持数据加密、基于 XPath 的搜索/查找查询。
您有一个基于 Java 的程序(甚至 Android 应用程序)并且您:
- 需要某种轻量级数据库来存储少量(几千行)数据;
- 需要一个纯java、易用、线程安全的数据库;
- 需要一些 ORM 支持;
- 需要一个好的查询接口;
- 好的 Mongodb 就像每个 API 级别的原子性(好的最终数据一致性);
- 希望能够方便地添加、编辑、更新、删除db数据文件,即使Jsondb正在运行时;
- 希望能够无缝移动数据库文件,在数据库运行时通过网络下载更新的文件;
- 希望能够通过一些高强度加密来保护数据库数据文件中的敏感数据(密码等)。
- Jsondb 将数据库数据文件加载到内存中,所有 API 都会返回深度克隆的对象,因此您需要的内存至少与数据文件的大小相同,甚至更多,
- Jsondb 没有完整的事务支持(像原子 API 一样支持 Mongodb)
Jsondb 构建已上传到 Maven Central仓库
了解 JsonDB 用法的最佳方法是查看其源代码中许多 Junit 测试的代码。这些 junit 测试类涵盖了所有可能的场景。
Jsondb 中使用的主要类是:io.jsondb.JsonDBTemplate
JsonDBTemplate 的使用方式与 Spring Data MongoTemplate 类非常相似。
实例化 JsonDBTemplate
定义 POJO
您希望保存在 JsonDB 中的每个对象都必须是满足 JavaBean 编程约定的 POJO(普通旧 Java 对象)。每个对象必须实现可序列化或外部化,必须具有无参数(默认)构造函数,并且其每个属性(属性)必须具有公共 setter 和 getter 方法。这些方法的名称必须符合 JavaBean 命名约定。
请注意,POJO 中的包与我们在实例化 JsonDBTemplate 对象时传递的第二个参数相同。
另请注意 POJO 中的 3 个注释:
@Document :该注解表示该 POJO 是一个 Jsondb Collection,属性 collection 指定磁盘上 .json 文件的名称,属性 schemaVersion 指定 schema版本此支持尚未完成。
@Id :该注解表示该字段是集合中的主键。Jsondb 每个集合仅支持一个 Id 字段。
@Secret :该注释表示该字段的值在写入磁盘之前应进行加密。
如果集合不存在则创建
将文档插入集合
从集合中删除文档
将文档保存到集合中
将文档更新插入集合中
知道 Id 后查找文档
XPATH 语法允许使用多种方式来查询和定位感兴趣的文档。下面是几个例子:
查找具有等于条件的文档
查找不等于条件的文档
查找大于条件的文档
根据查询作为原子操作查找并删除第一个文档
根据原子操作查询查找并删除所有文档
基于查询作为原子操作查找和修改第一个文档
根据原子操作查询查找并删除所有文档
对 Jsondb 进行排序允许您使用 find() 和 findAll() 方法获得排序结果。
切片 Jsondb 切片功能与 python/numpy 切片功能类似。切片字符串参数应采用 i:j:k 格式,并且应遵循与 python/numpy 中的切片功能类似的所有规则。
切片可以与排序结合使用,也可以不与排序结合使用
- 如果您不需要加密支持,只需使用不需要密码参数或传递 null 的 JsonDBTemplate 构造函数。确保您没有在任何 POJO 中使用 @Secret 注释。
- 但是,如果您确实需要加密支持,则如上面的示例所示,实例化 io.jsondb.crypto.Default1Cipher 类的实例并在实例化 JsonDBTemplate 时传递该实例。
- 如果您需要帮助为上述默认密码创建安全的 Symmetric Key ,请使用以下独立命令。
- 如果您需要 192 位或 256 位安全 Symmetric Key ,请确保您的 JRE\\lib\\security 文件夹中有无限强度 JCE 策略 jar,然后编写类似于 CryptoUtil.generate128BitKey() .编译并执行它并在实例化 JsonDBTemplate 时使用密钥。
- 如果您需要自定义加密支持(例如 DES 加密),您可以实现接口 io.jsondb.crypto.ICipher ,然后在实例化 JsonDBTemplate 时使用该接口。
- 如果您需要更改使用的 cipher 和/或 key ,请使用以下 api。确保备份数据库文件,以防出现问题。
代码71
代码 · 目录
上一篇如何用代码实现“隐写术”
Java 连接操作 MySQL 数据库(增删查改操作)
- MySQL 5.5 版本
- eclipse
- MySQL 连接驱动 mysql-connector-java-5.1.18-bin.jar
mysql8.0之前的版本与之后的版本使用的jar包是不同的,在使用时也有一定的区别。这里,我的 MySQL 版本为 5.5。
- 将 jar 包添加到项目中,右键项目,如下,选择Configure Build Path…
- 将刚才下载好的 jar 包添加进去即可
- 首先,建立一个数据库模板 DBConfig.java
注意:要提前建立一个数据库,然后在JDBC_URL中填写你自己的数据库名称
- 建表操作 CreateTest.java
- 插入操作 InsertTest.java
- 更新操作 UpdateTest.java
- 删除、查询操作 SearchTest.java
再见了收费的Navicat!操作所有数据库有DBeaver就够了
为了快速管理数据库,我们一般都会选择一款顺手的数据库管理工具。Navicat、DataGrip虽然很好用,但都是收费的。今天给大家推荐一款免费、功能强大的数据库管理工具DBeaver,希望对大家有所帮助!
DBeaver简介
DBeaver是一款开源的数据库管理工具,在Github上已经有22K+Star。支持多达100种数据库,不管是关系型数据库还是非关系型数据库,基本上你能想到的数据库它都能支持,下面我们来看看它支持的数据库够不够全!
下载安装
接下来我们来下载安装DBeaver,直接下载压缩包版本,解压即可使用。
- 首先我们从官网下载zip版本,下载地址:https://dbeaver.io/download/
- 下载完成后解压到指定目录,然后双击dbeaver.exe即可运行;
- 运行成功后,默认可以选择创建一个测试数据库(基于SQLite的数据库),看下界面,有点像Eclipse,实际上DBeaver就是基于Eclipse开发的。
外观配置
我们安装工具后,免不了需要一些设置,比如设置下字体大小之类的,接下来我们来设置下DBeaver。
- 默认情况下DBeaver的字体很小,我们需要调大点,选择窗口->首选项->外观->颜色和字体->基本->文本字体进行设置;
- 然后双击设置字体大小即可,比如设置为12号字体;
- 如果你想快速熟悉DBeaver的快捷键的话,可以打开帮助->辅助键面板查看所有快捷键;
- 如果你习惯了深色主题,也可以将DBeaver设置为深色主题,在窗口->首选项->外观中可以进行主题设置,选择Dark即可;
- 设置完成后,我们看下界面,还是挺炫酷的!
创建数据源
使用DBeaver操作数据库时,我们需要先创建数据源。
- 我们可以选择左上角的加号->MySQL来创建MySQL数据源;
- 创建完成后输入连接信息即可连接,如果是第一次连接的话会提示下载JDBC驱动;
- 连接成功后就可以在左侧看到数据库中的数据库、表、视图、索引等相关信息了。
管理表相关操作
数据库连接创建完成后,我们就可以对其中的表进行操作了,接下来我们来查看、创建下表试试。
- 双击一张表,选择属性标签,可以看到表详细的列属性;
- 选择属性->DDL可以查看详细的建表语句;
- 选择数据标签,可以分页查看表中数据;
- 在顶部过滤框中直接输入SQL语句中的where部分,可以直接过滤表数据;
- 如果我们不想显示某些字段,可以右键表头选择过滤->自定义过滤,然后把过滤字段[v]改成[]即可;
- 如果你想新建表的话,在左侧右键,选择新建表即可;
- 然后右键选择添加字段,在DBeaver中,[v]符号代表是,[]代表否,这里我们创建一个主键ID,选择自增;
- 这里需要注意的是,主键需要在约束里面创建,选择创建约束,然后将id选择为主键约束即可。
SQL操作
数据库表操作介绍完了,接下来介绍下如何在DBeaver中进行SQL操作。
- 右键数据库,选择SQL编辑器可以之间打开SQL界面进行操作;
- DBeaver的SQL提示功能还是挺强大的,对于SQL关键字、函数、数据库表和字段都支持了;
- 有时候我们需要创建insert所有字段的语句,此时手写比较麻烦,我们可以直接使用DBeaver生成SQL功能,右键选择一条记录,选择生成SQL即可;
- 我们可以发现基于全字段的CRUD语句基本都能生成,还是挺方便的,我们生成个insert语句试试。
其他数据库支持
虽说DBeaver支持多达100种数据库,但是社区版本支持的数据库并不多,常用的NoSQL数据库MongoDB和Redis都没有支持。
- 使用企业版本才可以支持Redis,创建Redis连接后即可管理Redis中的数据;
- 创建MongoDB连接后也可以管理MongoDB中的数据。
总结
DBeaver确实是一款非常优秀的开源数据库管理工具,提示很全,功能也多,平时开发基本上也够用了。但是对比那些收费的工具,还是有些不足的。对比Navicat,它没有数据库结构同步的功能,也没有数据库设计功能。对比DataGrip,它的提示功能显得有点弱,函数没提示。
来源:https://mp.weixin.qq.com/s/kUmMRlcCOL21DbtO81lEQQ
本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com
文章为作者独立观点不代本网立场,未经允许不得转载。