乐趣区

关于java:如何在-SAP-BTP-Java-应用里使用-SQLite-数据库

SAP Cloud Application Programming 模型的举荐是将 service 和 model 模型的定义分来到。

因而,咱们在 db 文件夹里定义 model model.

新建一个 schema.cds 文件:

    namespace sap.capire.products;

    using {Currency, cuid, managed, sap.common.CodeList} from '@sap/cds/common';

    entity Products : cuid, managed {title    : localized String(111);
        descr    : localized String(1111);
        stock    : Integer;
        price    : Decimal(9,2);
        currency : Currency;
        category : Association to Categories;
    }

    entity Categories : CodeList {
        key ID   : Integer;
        parent   : Association to Categories;
        children : Composition of many Categories on children.parent = $self;
    }

内容如下:

这里用关键字 entity 定义了 Products 和 Categories 两个畛域模型。其中 Currency,cuid 和 CodeList 等规范类型,来自 @sap/cds/common:

localized 关键字可用于标记须要翻译的元素。存储不同语言的翻译和存储默认后备翻译的能力由 CDS 主动解决。

Associations 和 Compositions

associationscompositions 可用于定义实体之间的关系。它们通常容许您在不明确应用外键的状况下定义这些关系。

尽管关联定义了实体之间相当涣散的耦合,但组合定义了蕴含关系。组合也能够被认为是定义深层构造。能够沿这些构造执行深度插入和更新插入。

在域模型中,类别实体定义了父元素和子元素。这启用了类别的层次结构。一个类别的 children entity 被建模为一个组合。一个蕴含所有子类的类别定义了一个深层嵌套构造。删除一个类别将主动删除其所有子项。然而,一个类别的父类被建模为一个关联。删除一个类别显然不应该删除它的父类。

cuid 和 managed 都是 aspect,后者用附加元素扩大 entity. cuid aspect 将 UUID 类型的要害元素 ID 增加到 entity.

managed aspect 将创立和批改工夫戳等字段增加到 entity 内。

咱们按住 ctrl 键 + 左键,就能查看到这些 aspect 对应的实现:

CodeLists 可用于存储基于代码(例如货币、国家或语言)的全局可翻译定义。特地是对于 UI,CodeList 可用于为某些输出字段提供值帮忙。

Currency 定义是一种类型。它定义了与货币实体的关联。Currencies 实体基于 ISO 4217 并应用三个字母的字母代码作为键,例如 EUR 或 USD,并提供了存储相应货币符号(例如 € 或 $)的可能性。

在 service 定义里,将 domain model 里某些字段裸露进去:

上面咱们须要将 domain model 部署到 sqllite 里。

首先应用命令行装置 sqlite

npm install –save-dev sqlite3

运行如下命令行,应用命令即将 domain model 初始化 sqlite:

cds deploy –to sqlite

下一步咱们须要将 spring boot 利用同 sqlite 数据库建设关联关系。

关上 main/resources/application.yaml 文件:

---
spring:
  profiles: default
  datasource:
    url: "jdbc:sqlite:/home/user/projects/products-service/sqlite.db"
    driver-class-name: org.sqlite.JDBC
    initialization-mode: never
    hikari:
      maximum-pool-size: 1

应用 curl 插入一条新的数据:

curl -X POST http://localhost:8080/odata/v4/AdminService/Categories \
-H "Content-Type: application/json" \
-d '{"ID": 1,"name":"TechEd","descr":"TechEd related topics","children": [{"ID": 10,"name":"CAP Java","descr":"Run on Java"}, {"ID": 11,"name":"CAP Node.js","descr":"Run on Node.js"}]}'

而后应用上面的 url,即可胜利拜访刚刚插入的 categories 数据:

https://workspaces-ws-pdwk4-a…

退出移动版