繁体   English   中英

如何从java作为列将json作为关系数据存储在Oracle表中?

[英]How to store json as relational data in an Oracle table from java as a column?

我试图弄清楚如何在oracle 12中具有id和json数据的行。示例中有将json以“ is_json”约束的形式存储在oracle 12中的方法,但无法弄清楚我将如何通过java发送对象;作为字符串或json对象? 我可以使用SODA jar将普通行数据(id)和JSON一起存储吗? 如何在Java中获取(查询)IS_JSON约束列?

需要了解有关完整用例的更多详细信息。

但是,通常,您有两种选择:

(1)您可以使用SODA Java。 这将创建一个集合。 在幕后,集合由一个常规表支持,该表将具有一个ID列(用于键)和一个JSON_JSONU列(用于JSON内容)(默认情况下,如果需要,可以将自定义集合元数据传递给createCollection来更改列名)。 该基础收集表也可以从SQL看到/访问。 默认情况下,JSON_DOCUMENT是BLOB,但是通过自定义集合元数据,您可以请求VARCHAR2或CLOB存储。 在几行代码中,这一切都非常容易做到。

请参阅入门示例: https : //github.com/oracle/soda-for-java/blob/master/doc/Getting-started-example.md

SODA基本上为您提供了NoSQL文档集合的抽象,并且在Java中使用它非常容易。 它使您不必在JDBC上编写SQL代码,也不必处理诸如绑定变量等底层内容。

(2)如果SODA不是您的用例的正确抽象,则可以在Oracle和JDBC中使用JSON支持(这也正是SODA在幕后使用的东西)。 您将创建一个包含ID列和JSON列的常规表。 定义此表时,您会在JSON列上添加“ is json”约束。 JSON列的类型可以为BLOB(推荐),VARCHAR2或CLOB。 与VARCHAR2相比,使用BLOB时,JSON大小不限于32k,并且避免了编码转换。

然后,您将照常使用JDBC绑定/获取JSON数据(就像您通常将非JSON数据绑定/获取到BLOB / VARCHAR2 / CLOB /从中获取一样,什么都没有改变)。 您可以在通过JDBC发出的SQL查询中使用各种JSON运算符(json_value,json_table等),以便使用JSON数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM