我对Qi4j感兴趣,但我不知道它与SQL数据库的匹配程度如何。
我想知道Qi4j为支持SQL数据库提供了什么?
谢谢!
答案 0 :(得分:3)
Qi4j SQL支持就像Qi4j一样,是一个库和扩展的选择集合。
首先,您可以在已经使用其他东西来处理持久性的应用程序中使用Qi4j(JDBC,JPA或任何其他技术)。 Qi4j核心很小,您可以自由使用SDK中存在的库和扩展。
如果您不想使用Qi4j持久性支持(即实体和查询API),您仍然可以利用允许您作为Qi4j服务管理DataSource(连接池)的SQL库。如文档中所述,SQL库免费为您提供CircuitBreaker Library和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 Query 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
/保
答案 1 :(得分:0)
早就应该提供更好的SQL支持,目前正在努力将Apache Polygene(以前称为Qi4j)模型存储在SQL关系模型中。与以前的SQL实体存储不同,后者将JSON对象实际存储在SQL中的键值存储中,此实体存储将每个Property放在其自己的列中,并使用单独的表来实现多对多关系(反向映射为1到 - 不支持很多关系。)
预计将于2017年底纳入3.1.0版本。