我对 Qi4j 很感兴趣,但我不知道它与 SQL 数据库的匹配程度如何。
我想知道 Qi4j 提供什么来支持 SQL 数据库?
谢谢 !
Qi4j SQL 支持就像所有 Qi4j 一样,是一个可选的库和扩展集合。
首先,您可以在已经使用其他东西来处理持久性(JDBC、JPA 或任何其他技术)的应用程序中使用 Qi4j。Qi4j 内核很小,您可以自由使用或不使用 SDK 中的库和扩展。
如果您不想使用 Qi4j 持久性支持(即实体和查询 API),您仍然可以利用允许您将数据源(连接池)作为 Qi4j 服务进行管理的 SQL 库。如文档中所述,SQL 库免费为您提供 CircuitBreaker 库和 Qi4j I/O API 集成。此外,您可以选择导入现有的 DataSource(如果您将应用程序部署在容器中并且希望该容器管理 DataSource,这很有用),或者使用以下任何连接池实现:Apache DBCP、C3P0 或 BoneCP。见http://qi4j.org/latest/library-sql.html
Qi4j 持久性依赖于存储在 EntityStore 中的实体。SDK 提供了许多 EntityStore 实现,包括一个基于 SQL 数据库的实现。支持以下数据库:PostgreSQL、MySQL、MariaDB、SQLite(嵌入式)、H2(嵌入式或服务器)和 Apache Derby(又名 Oracle JavaDB,包括嵌入式和服务器模式)。见http://qi4j.org/latest/extension-es-sql.html
Qi4j 查询 API 依赖于索引/查询服务。同样,SDK 提供了多种实现,包括一种基于 SQL 数据库的实现。在撰写本文时,它仅支持 PostgreSQL 作为后端,但正在努力支持与 SQL EntityStore 一样多的 SQL 数据库。见http://qi4j.org/latest/extension-indexing-sql.html
最后,一个应用程序示例演示了如何使用 Qi4j SDK 提供的所有 SQL 支持,供您入门。见http://qi4j.org/latest/sample-sql-support.html
/保罗
早就应该提供更好的 SQL 支持,现在正在努力将 Apache Polygene(以前称为 Qi4j)模型存储在 SQL 关系模型中。与以前的 SQL 实体存储不同,后者将 JSON 对象有效地存储在 SQL 中的键值存储中,此实体存储将每个属性放在自己的列中,并为多对多关系使用单独的表(一对多的反向映射) - 不支持许多关系)。
预计将在 2017 年底包含在 3.1.0 版本中。