如何在 SAP BTP Java 应用里使用 SQLite 数据库
![如何在 SAP BTP Java 应用里使用 SQLite 数据库](https://static001.geekbang.org/infoq/86/86459e7212cda1e5286dca28bd15f9a6.jpeg)
SAP Cloud Application Programming 模型的推荐是将 service 和 model 模型的定义分离开。
因此,我们在 db 文件夹里定义 model model.
新建一个 schema.cds
文件:
内容如下:
![](https://static001.geekbang.org/infoq/b4/b49757da960d7209e60bfdeb08b20144.png)
这里用关键字 entity
定义了 Products 和 Categories 两个领域模型。其中 Currency,cuid 和 CodeList 等标准类型,来自 @sap/cds/common
:
localized
关键字可用于标记需要翻译的元素。 存储不同语言的翻译和存储默认后备翻译的能力由 CDS 自动处理。
Associations 和 Compositions
associations
和 compositions
可用于定义实体之间的关系。 它们通常允许您在不明确使用外键的情况下定义这些关系。
虽然关联定义了实体之间相当松散的耦合,但组合定义了包含关系。 组合也可以被认为是定义深层结构。 可以沿这些结构执行深度插入和更新插入。
在域模型中,类别实体定义了父元素和子元素。 这启用了类别的层次结构。 一个类别的 children entity 被建模为一个组合。 一个包含所有子类的类别定义了一个深层嵌套结构。 删除一个类别将自动删除其所有子项。 然而,一个类别的父类被建模为一个关联。 删除一个类别显然不应该删除它的父类。
cuid 和 managed 都是 aspect
,后者用附加元素扩展 entity. cuid aspect 将 UUID 类型的关键元素 ID 添加到 entity.
managed aspect 将创建和修改时间戳等字段添加到 entity 内。
我们按住 ctrl 键 + 左键,就能查看到这些 aspect 对应的实现:
![](https://static001.geekbang.org/infoq/96/96926478e86bf6e2b7b0d0ae88fbdbef.png)
CodeLists 可用于存储基于代码(例如货币、国家或语言)的全局可翻译定义。 特别是对于 UI,CodeList 可用于为某些输入字段提供值帮助。
Currency
定义是一种类型。 它定义了与货币实体的关联。 Currencies 实体基于 ISO 4217 并使用三个字母的字母代码作为键,例如 EUR 或 USD,并提供了存储相应货币符号(例如 € 或 $)的可能性。
在 service 定义里,将 domain model 里某些字段暴露出来:
![](https://static001.geekbang.org/infoq/90/9029bc404944088efb26120967a6aa1f.png)
下面我们需要将 domain model 部署到 sqllite 里。
首先使用命令行安装 sqlite
:
npm install --save-dev sqlite3
![](https://static001.geekbang.org/infoq/d1/d17fcffb87d592c27beea96265dd58b8.png)
运行如下命令行,使用命令行将 domain model 初始化 sqlite:
cds deploy --to sqlite
![]()
下一步我们需要将 spring boot 应用同 sqlite 数据库建立关联关系。
打开 main/resources/application.yaml 文件:
![](https://static001.geekbang.org/infoq/97/97c03f1d6f7000b5edcba3274d3a5a6c.png)
使用 curl 插入一条新的数据:
然后使用下面的 url,即可成功访问刚刚插入的 categories 数据:
![](https://static001.geekbang.org/infoq/e2/e2c6eaa6dd42f0899d61f2b68a271a61.png)
版权声明: 本文为 InfoQ 作者【Jerry Wang】的原创文章。
原文链接:【http://xie.infoq.cn/article/f335f8768224bba4d2a0abe2a】。文章转载请联系作者。
评论