文档结构  
翻译进度:已翻译     翻译赏金:0 元 (?)    ¥ 我要打赏

Kundera 是一个兼容JPA接口的对象映射器。 当前Kundera 支持的数据库有:Cassandra, MongoDB, HBase, Redis, OracleNoSQL, Neo4j, CouchDB, Kudu, Relational databases, Apache Spark.

新手请阅读Getting Started in 5 minutes 和Working with MongoDB using Kundera

在MongoDB中存储大文件

为了存储大于 BSON文档限制大小(16MB)的文件,MongoDB 提供了GridFS

 GridFS 把一个文件切分为很多块,每一块存储在一个文档中,而不是存在一个文档中。 默认情况下, GridFS每一个块的大小最大为255k。 GridFS使用两个collection来存储这些文件。一个collection用于存储文件块,另一个存储文件的元数据。

第 1 段(可获 2 积分)

GridFS 和 Kundera

Kundera允许用户用GridFS对MongoDB中的大文件执行CURD和Query操作。用户需要做的就是在你想要用GridFS插入的文件中添加一个@javax.persistence.Lob 注释。

实体样例:

@Entity
public class Book
{
    @Id
    private String id;

    @Column
    private String title;

    @Lob
    private byte[] pdfFile;

    //setters and getters
}

映射

@Lob Field ==> GridFSInputFile.

Other Fields ==> GridFSInputFile.metadata.

思考上面提到的实体样例。GridFSInputFile是用pdf文件创建的。其他文件(id,title)被保存在GridFSInputFile的元数据里。

 

第 2 段(可获 2 积分)

CRUD 与查询

请参考 test case.

限制

  • CRUD只能针对简单实体 (没有关联、继承、内嵌等)。
  • 查询只支持 WHERE 和ORDER BY 
  • Lob 字段数据类型只能是 byte[].

结论

Kundera兼容JPA规范,与NoSQL数据库一起更易使用。 无论使用的是什么数据库都是编写相同的JPA查询。 当然,如果用户想切换数据库(如:从HBase 切换到MongoDB),它不需要重新编写代码的 — 只需要修改 persistence.xml 文件中的配置信息。 

第 3 段(可获 2 积分)

文章评论