SAP Netweaver和Hybris的数据库层
ABAP Netweaver
在SAP基于Netweaver的ABAP应用里,应用开发人员用Open SQL访问数据库, 这些Open SQL会被Database interface(数据库接口)转换成各种数据库提供商支持的原生SQL语句然后执行。

Netweaver 支持的数据库提供商在表DBCON的DBMS字段里能看到:

除了普通的ABAP Open SQL的语句用于业务数据的增删查改之外,SAP CRM和C4C里还支持Enterprise Search(有时也成为simple search,模糊搜索), 就是类似Google搜索一样,用户只需要指定待搜索值,而无需指定该搜索值对应的搜索条件。

在这两个产品里的Enterprise Search实现原理实际上是应用程序发起一个RFC(Remote Function Call)到TREX服务器上拿到查询结果。
关于SAP TREX介绍请参考wikipedia.
https://en.wikipedia.org/wiki/TREX_search_engine

Hybris
Hybris里也有和CRM WebUI里的API层起同样作用的层,封装了对DB的操作。

Hybris里对数据库的访问实现是封装在大量以DAO(Data Access Object)结尾的Java class实现的,相当于SAP CRM API层的那些function module。

随便点开一个DAO看实现,里面也是拼SQL语句然后抛到DB去执行:

上图代码里拼装的SQL语句也不是数据提供商相关的原生SQL语言,而是一种新的语言,称为Flexible Search。类似ABAP的OPEN SQL一样,它将Hybris应用访问数据库层的代码和底层数据库解耦。
在Hybris帮助文档上能看到支持的数据库列表:

在Hybris开发环境下使用的数据库名叫HSQLDB: 一个轻量级的纯Java开发的开放源代码的关系数据库系统

要获取更多Jerry的原创技术文章,请关注公众号"汪子熙"或者扫描下面二维码:


SAP Netweaver和Hybris的数据库层的更多相关文章
- CRM, C4C和SAP Hybris的数据库层设计
SAP的product都是DB provider无关的. CRM大家都很熟悉了,application developer最多用Open SQL直接操作表. Netweaver里支持的DB provi ...
- Salesforce和SAP Netweaver里数据库表的元数据设计
从Salesforce官网可以了解到Salesforce的force.com平台里数据库表的设计:https://developer.salesforce.com/page/Multi_Tenant_ ...
- 还在写SQL做SAP二开?通过RFC调用NetWeaver,让HANA数据库操作更可靠
相比于从零开始构建全套信息化系统,基于成熟的ERP等行业软件做二次开发是更多中大型企业应对个性化软件需求的首选方案.如何在二开模块中,可靠地对成品软件的数据库进行读写操作,以满足单据自动创建.元数据自 ...
- GZFramwork数据库层《四》单据主从表增删改查
同GZFramwork数据库层<三>普通主从表增删改查 不同之处在于:实例 修改为: 直接上效果: 本系列项目源码下载地址:https://github.com/GarsonZhang/G ...
- GZFramwork数据库层《三》普通主从表增删改查
运行结果: 使用代码生成器(GZCodeGenerate)生成tb_Cusomer和tb_CusomerDetail的Model 生成器源代码下载地址: https://github.com/Gars ...
- GZFramwork数据库层《二》单据表增删改查(自动生成单据号码)
运行效果: 使用代码生成器(GZCodeGenerate)生成tb_EmpLeave的Model 生成器源代码下载地址: https://github.com/GarsonZhang/GZCodeGe ...
- GZFramwork数据库层《前言》Demo简介
本系列旨在熟悉GZFramwork数据库层操作,对数据库表进行增删改查,单据编号生成等: 详细见图: 普通单表操作: 数据库建模: 创建表脚本: from sys.sysreferences r jo ...
- GZFramwork数据库层《前言》DLL项目引用
新建项目: 1. 项目引入GZFramwork.dll NuGet地址:Install-Package GZFramwork 每个项目都引用 2.BLL层 设置数据库连接维护类:继承于:GZFramw ...
- GZFramwork数据库层《一》普通表增删改查
运行结果: 使用代码生成器(GZCodeGenerate)生成tb_MyUser的Model 生成器源代码下载地址: https://github.com/GarsonZhang/GZCode ...
随机推荐
- UVALive 3645 时序模型
按航班拆点 注意返边的条件 #include<bits/stdc++.h> using namespace std; const int maxn = 1e6+11; const int ...
- firewall 端口转发
centos 7 使用背景:某次新购阿里云服务器安装nginx后配置80转8080的内部转发 systemctl status firewalld ---查看守护进程状态systemctl start ...
- sudo 命令问题详解(一)
普通用户不能使用sudo命令的解决办法 https://www.cnblogs.com/fasthorse/p/5949946.html 解决sudo: sorry, you must have a ...
- Android Studio 2.2以上支持了Cmake的配置JNI的相关参数
Android Studio 2.2以上支持了Cmake的配置JNI的相关参数,简化了通过Android.mk配置.并很好的继承了C++的编辑方式.以下是对应的引入第三方so和第三方.cpp文件的路径 ...
- 宋宝华: 关于Linux进程优先级数字混乱的彻底澄清
宋宝华: 关于Linux进程优先级数字混乱的彻底澄清 原创: 宋宝华 Linux阅码场 9月20日 https://mp.weixin.qq.com/s/44Gamu17Vkl77OGV2KkRmQ ...
- Java基础13-数组算法
1.数组的复制 //复制算法,将arr1数组的值复制给arr2数组 import java.util.Arrays; public class Test1{ public static void ma ...
- java多线程异常捕获
java多线程中出现了异常,如何捕获.利用UncaughtExceptionHandler这个接口就可以了. 代码如下: package com.ming.thread.six.threadcreat ...
- Quartz使用(1) - 初识quartz
1. 背景 由于最新的工作项目中,需要使用quartz框架,以完成相关的任务的定时执行.经过两周的调研与使用,本系列博客会参考官网及网上相关博客,结合工作项目中的使用,详细介绍quartz的各个方面. ...
- CentOS7 安装oracle 客户端
参考 http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html 下载 oracle-instantclient11. ...
- (初学)wpf仿QQ界面-整体布局
跟一个小学弟一起学习wpf,小学弟是刚初中毕业,对编程刚刚接触,我挺怕自己带的不好,影响小学弟以后在编程方向的学习兴趣.我承认自己水平不高,但是在努力去学习新知识!一起加油吧!在此以博客,记录学习进度 ...