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 的原创技术文章,请关注公众号"汪子熙":

版权声明: 本文为 InfoQ 作者【Jerry Wang】的原创文章。
原文链接:【http://xie.infoq.cn/article/870b8903e58ce630afe167daa】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论