用于SaaS和NoSQL的Jdbi

一个自然的接口,用于与CRM,ERP,会计,营销自动化,NoSQL,平面文件等基于Java的数据集成

Jdbi是Java的SQL便利库,它为JDBC提供更自然的Java数据库接口,该接口易于绑定到域数据类型。 该库包含构建基块,使开发人员可以更轻松地映射应用程序内的关系和对象。

通常,Java开发人员会考虑使用Jdbi处理关系数据库。 但是,已经出现了新的JDBC驱动程序,可以通过各种SaaS,NoSQL和大数据存储提供实时数据连接,从而将Jdbi的适用性扩展到新一代项目。

以CData Software( www.cdata.com/jdbc/ )中的JDBC驱动程序为例 。 CData提供了纯Java JDBC驱动程序,可以实时访问应用程序源,例如Salesforce,NetSuite,Eloqua,Marketo,Dynamics,Hubspot以及其他100多个。 它们甚至提供与NoSQL数据源的SQL连接,例如MongoDB,Couchbase,Redis,Athena,BigQuery等。

利用这些驱动程序,Java开发人员可以轻松地将实时数据连接集成到他们的应用程序中。 本文的其余部分简要概述了如何使用用于Salesforce的CData JDBC驱动程序在Jdbi中为Salesforce数据创建SQL Object API。

Jdbi访问Salesforce

Jdbi公开了两种不同的样式API:流利的样式和SQL对象样式。 用于Salesforce的CData JDBC驱动程序将连接性集成到Java应用程序中的实时Salesforce数据。 通过将这些技术配对,您可以获得对Salesforce数据的简单编程访问。 以下代码逐步构建了用于读写Salesforce数据的基本数据访问对象(DAO)。

为Salesforce客户实体创建DAO

下面的接口为SQL对象声明了所需的行为,以便为每个要实施的SQL语句创建一个方法。

// JavaScript source code
public interface MyAccountDAO {//insert new data into Salesforce
@SqlUpdate("INSERT INTO Account (Name, AnnualRevenue) values (:name, :annualRevenue)")void insert(@Bind("name") String name, @Bind("annualRevenue") String annualRevenue);//request specific data from Salesforce (String type is used for simplicity)
@SqlQuery("SELECT AnnualRevenue FROM Account WHERE Name = :name")String findAnnualRevenueByName(@Bind("name") String name);/** close with no args is used to close the connection*/void close();
}

打开与Salesforce的连接

收集必要的连接属性,并构建适当的JDBC URL以连接到Salesforce,该URL通常如下所示:

jdbc:salesforce:User=username;Password=password;SecurityToken=Your_Security_Token;

有多种身份验证方法可用于连接到Salesforce:

  • 登录
  • OAuth
  • 单点登录

登录方法要求您具有用户名,密码和安全令牌。 如果您无权访问用户名和密码,或者不想使用它们,则可以使用OAuth身份验证。

可以通过设置SSOProperties,SSOLoginUrl和TokenUrl连接属性来使用SSO(单点登录),这些属性允许您向身份提供者进行身份验证。 有关更多信息,请参见帮助文档中的“入门”一章。

使用配置的JDBC URL获取DAO接口的实例。 下面显示的特定方法将打开绑定到实例的句柄,因此需要显式关闭实例以释放该句柄和绑定的JDBC连接。

DBI dbi = new DBI("jdbc:salesforce:User=username;Password=password;SecurityToken=Your_Security_Token;");
MyAccountDAO dao = dbi.open(MyAccountDAO.class);//do stuff with the DAO
dao.close();

读取Salesforce数据

打开对Salesforce的连接后,只需调用先前定义的方法即可从Salesforce中的Account实体检索数据。

//display the result of our 'find' method
String annualRevenue = dao.findAnnualRevenueByName("GenePoint");
System.out.println(annualRevenue);

写入Salesforce数据

使用先前定义的方法将数据写入Salesforce也很简单。

//add a new entry to the Account entity
dao.insert(newName, newAnnualRevenue);

由于Jdbi库能够使用JDBC连接,因此您可以通过与用于Salesforce的CData JDBC驱动程序集成来轻松生成用于Salesforce的SQL Object API。

就这么简单

Jdbi提供了一个易于使用的数据界面,可以简化数据连接的复杂性。 与CData的JDBC驱动程序配合使用时,Jdbi提供了一个干净的对象接口,可以在您的下一个集成项目中使代码减少10倍或更多,同时还增强了可维护性和重用性。

有关Jdbi的更多信息,可以在线找到: http ://jdbi.org/

从CData网站下载免费试用版Salesforce JDBC驱动程序(以及100多个其他JDBC驱动程序): https ://www.cdata.com/jdbc/

翻译自: https://www.javacodegeeks.com/2018/04/jdbi-for-saas-nosql.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/346930.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【卷积码系列2】(n,k,m)卷积码的生成多项式矩阵系数转网格图描述(不使用MATLAB库函数)

关注公号【逆向通信猿】更精彩!!! 回顾 之前关于(3,1,3)卷积码的维特比译码仿真写过一篇文章(基于C语言实现): 卷积码Viterbi译码算法基本原理及C语言实现 文中从概率的角度出发,对卷积码的基于硬判决和软判决维特比译码原理进行了阐述,最后以(3,1,3)系统卷积码为例…

【卷积码系列3】(n,k,m)卷积码的维特比译码实现(不使用MATLAB库函数)及性能对比(vitdec函数不使用MATLAB库函数【全部代码需私信另外付费获取】)

理论基础 MATLAB库函数polly2trellis(卷积码生成多项式转网格图描述)的实现过程详解 上面这篇仅作为了解!!! 【卷积码系列1】(n,k,m)卷积码的编码原理详解及MATLAB实现 【卷积码系列2】(n,k,m)卷积码的生成多项式矩阵系数转网格图描述(不使用MATLAB库函数) 维特比译码曲…

【数字信号处理】基于DFT的滤波系列1

一、引言 离散傅立叶变换(DFT)是很多数字信号处理(DSP)层面的核心,因此我们从这块开始。 我们首先快速回顾一下 DFT 的一些要点。 该模块这一部分的完整内容列表是: DFT 回顾 – 实数和复数形式一维(例如时间序列)数据的 DFT 滤波DFT 滤波的非理想行为窗口化二维图像的D…

udt java_Java DB中的Java用户定义类型(UDT)

udt javaJava DB是基于Java编程语言和SQL的关系数据库管理系统。 这是Apache软件基金会的开源Derby项目的Oracle版本。 Java SE 7 SDK中包含Java DB。 用户定义类型(UDT)是Java类,其实例(对象)存储在数据库表列中。 U…

【自适应盲均衡9】基于判决反馈的多径衰落信道的盲均衡与MATLAB仿真(CMA-DFE)

关注公号【逆向通信猿】更精彩!!! 关于基于常模准则的盲均衡(即CMA)的基础知识,首先可参考本人博客 【自适应盲均衡2】多径衰落信道的复数常模算法(CMA)的理论推导与MATLAB仿真 引言——判决反馈均衡器(DFE)的引入 线性FIR均衡器一直作为克服信道失真的主要手段。它对…

Java批处理教程

在当今世界,互联网已经改变了我们的生活方式,其主要原因之一是大多数日常琐事都使用互联网。 这导致可用于处理的大量数据。 其中涉及大量数据的一些示例是处理工资单,银行对帐单,利息计算等。因此,请设想一下&#x…

【自适应盲均衡10】基于判决引导(Decision Directed)的多径衰落信道双模式盲均衡算法与MATLAB仿真(DD-CMA)

关注公号【逆向通信猿】更精彩!!! 引言 判决反馈均衡器(Decision Feedback Equalizer, DFE)虽然能够避免线性FIR均衡器的噪声增强,适用于具有深度谱零点的信道均衡;但是容易产生误收敛情况,针对该问题有人提出了预测判决反馈均衡器(PDFE),这个后续再说。 此次要讨论…

【数字信号处理】基于DFT的滤波系列2(含MATLAB代码)

关注公号【逆向通信猿】更精彩!!! 三、时频域的“数” 在该节的大部分内容中,我们将使用无量纲数字序列的数据。然而,对于现实世界的数据,这些数字将具有基础单位。在本节中,将解释时域和频域之间的联系。 假设有N个采样频率为 f s f_s f

编写junit 测试_使用JUnit和Repeat注​​释编写有效的负载测试

编写junit 测试EasyTest最近推出了一组新的注释,可帮助其用户编写有效的测试用例。 进入EasyTest的两个主要注释是: 重复 持续时间 今天,我们将讨论重复标注。 一种新的方法级别注释 重复已添加到EasyTest Framework。 此批注可用于重复…

【数字信号处理】基于DFT的滤波系列3之插值滤波(含MATLAB代码)

四、基于DFT的(理想)滤波 例2:一个“警告” “理想DFT滤波器”虽然简单、有效,但可能会导致意想不到的问题。在博客 【数字信号处理】基于DFT的滤波系列2(含MATLAB代码) 中,数据本身是理想的,由完美的谐波组成,这些谐波在频域中以单一频率理想地表示(无频谱泄漏),这…

Java 9中的无限集

一套 甲Set是元素的集合&#xff0c;从而在任何给定的元件Set只出现一次。 更正式地说&#xff0c;集合不包含元素e1和e2对&#xff0c;因此e1.equals(e2) 。 我们可以像这样在Java 9中轻松创建Set &#xff1a; final Set<Integer> s Set.of(1, 2, 3); System.out.p…

json文件读取之reader.onload中的定义的变量在其函数外部进行处理

采用FileReader读取json文件时,发现只能在reader.onload函数内部获取文件数据,且无法在函数外部访问其内部定义的变量,在网上查阅资料,发现也有博客提到这个问题,如下: VUE的reader.onload方法怎么把值抛出去 在reader.onload中的定义的变量如何在外部调用 … 网上其他…

【数字信号处理】基于DFT的滤波系列4之加窗(含MATLAB代码)

四、基于DFT的(理想)滤波 加窗以减少频谱泄漏 在上面的例子中,整数次谐波被用来产生理想中的示例。这意味着一个完整的整数周期适合正在使用的样本数。一个明显的问题是,如果使用非整数周期数(以及谐波)会怎样?答案是远没有那么有效。 在现实世界中,从这个意义上说,数…

结构为键值的map_在Java中增加Map值的最有效方法-只需搜索键一次

结构为键值的map这个问题可能被认为太基础了&#xff0c;但是在论坛中经常被问到。 在本文中&#xff0c;我将讨论一种仅在Map ONCE中搜索键的方法。 让我们首先来看一个例子。 假设我正在使用Map创建一个字符串频率列表&#xff0c;其中每个键是一个正在计数的String &#x…

【数字信号处理】基于DFT的滤波系列5之二维DFT滤波(含MATLAB代码)

五、二维DFT滤波 前几节介绍的用于对时间序列滤波的原理也可用于对图像的滤波,采用二维傅里叶变换技术。 下图为一幅图像的二维DFT(2D DFT)变换后的幅度值,该图像仅由一个恒定强度组成,因此它是0Hz分量——背景强度。在可视化 2D DFT 的结果时通常使用fftshift(),因此 DC…

Vaadin教程

1.简介 当您是后端开发人员时&#xff0c;您会听到人们说您无法创建内置HTML的UI页面并且无法使用CSS设置样式时所引起的痛苦。 就像成为后端开发人员一样&#xff0c;它具有已知的局限性&#xff0c;即我们可以播放和运行大型生产后端应用程序&#xff0c;但不能创建漂亮的页面…

【定时同步系列5】Farrow内插器结构原理和MATLAB实现

引言 通常我们接收到的信号是过采样的 x ( m T s ) x(mT_s) x(mT

【数字信号处理】基于DFT的滤波系列6之维纳滤波理论推导与MATLAB仿真

维纳(Wiener)滤波 引言 罗伯特维纳(Norbert Wiener)是一位对信号处理理论做出重大贡献的神童。维纳滤波是其中之一,维纳-辛钦(Wiener-Khinchin)定理是另一个表明信号的功率谱密度是其自相关函数的傅里叶变换的定理。他也是控制论的“鼻祖”。 我们将看一下维纳滤波器的一个…

jee web_您基于JEE的Web项目的结构是什么?

jee web在这篇文章中&#xff0c;我将尝试讨论基于Web的项目的各种组织结构&#xff0c;主要是使用JSF。 开始新项目时&#xff0c;首先想到的是如何组织Java包&#xff1f; 想象一下&#xff0c;您开发了一个基于Web的用户和组管理系统。 很长时间以来&#xff0c;我使用了以下…

【数字信号处理】希尔伯特变换系列1之相位处理(含MATLAB代码)

利用希尔伯特变换进行相位处理 相位的频域处理 在讨论“理想DFT滤波”时,我们注意到通常信号的相位将保持不变,这意味着不会发生由非线性相位引起的失真。然而,应该总是考虑相位响应(或者至少意识到它的存在)和幅度响应。对于所有频率,应该考虑幅度和相位。那么一个明显的…