如何在 SAP BTP Java 应用里使用 SQLite 数据库

简介: 如何在 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

associations 和 compositions 可用于定义实体之间的关系。 它们通常允许您在不明确使用外键的情况下定义这些关系。


虽然关联定义了实体之间相当松散的耦合,但组合定义了包含关系。 组合也可以被认为是定义深层结构。 可以沿这些结构执行深度插入和更新插入。


在域模型中,类别实体定义了父元素和子元素。 这启用了类别的层次结构。 一个类别的 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-app1.us10.trial.applicationstudio.cloud.sap/odata/v4/AdminService/Categories


相关文章
|
2天前
|
SQL 监控 Java
技术前沿:Java连接池技术的最新发展与应用
本文探讨了Java连接池技术的最新发展与应用,包括高性能与低延迟、智能化管理和监控、扩展性与兼容性等方面。同时,结合最佳实践,介绍了如何选择合适的连接池库、合理配置参数、使用监控工具及优化数据库操作,为开发者提供了一份详尽的技术指南。
17 7
|
2天前
|
Java 数据库连接 数据库
优化之路:Java连接池技术助力数据库性能飞跃
在Java应用开发中,数据库操作常成为性能瓶颈。频繁的数据库连接建立和断开增加了系统开销,导致性能下降。本文通过问题解答形式,深入探讨Java连接池技术如何通过复用数据库连接,显著减少连接开销,提升系统性能。文章详细介绍了连接池的优势、选择标准、使用方法及优化策略,帮助开发者实现数据库性能的飞跃。
14 4
|
1天前
|
缓存 Java 数据库连接
Hibernate:Java持久层框架的高效应用
通过上述步骤,可以在Java项目中高效应用Hibernate框架,实现对关系数据库的透明持久化管理。Hibernate提供的强大功能和灵活配置,使得开发者能够专注于业务逻辑的实现,而不必过多关注底层数据库操作。
5 1
|
2天前
|
SQL Java 数据库连接
打破瓶颈:利用Java连接池技术提升数据库访问效率
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,避免了频繁的连接建立和断开,显著提升了数据库访问效率。常见的连接池库包括HikariCP、C3P0和DBCP,它们提供了丰富的配置选项和强大的功能,帮助优化应用性能。
16 2
|
5天前
|
移动开发 前端开发 JavaScript
java家政系统成品源码的关键特点和技术应用
家政系统成品源码是已开发完成的家政服务管理软件,支持用户注册、登录、管理个人资料,家政人员信息管理,服务项目分类,订单与预约管理,支付集成,评价与反馈,地图定位等功能。适用于各种规模的家政服务公司,采用uniapp、SpringBoot、MySQL等技术栈,确保高效管理和优质用户体验。
|
5天前
|
SQL 监控 Java
Java性能优化:提升应用效率与响应速度的全面指南
【10月更文挑战第21】Java性能优化:提升应用效率与响应速度的全面指南
|
7天前
|
Java 数据处理
|
2天前
|
Java 开发者
Java中的多线程基础与应用
【10月更文挑战第24天】在Java的世界中,多线程是提高效率和实现并发处理的关键。本文将深入浅出地介绍如何在Java中创建和管理多线程,以及如何通过同步机制确保数据的安全性。我们将一起探索线程生命周期的奥秘,并通过实例学习如何优化多线程的性能。无论你是初学者还是有一定经验的开发者,这篇文章都将为你打开一扇通往高效编程的大门。
7 0
|
16天前
|
存储 关系型数据库 MySQL
Mysql(4)—数据库索引
数据库索引是用于提高数据检索效率的数据结构,类似于书籍中的索引。它允许用户快速找到数据,而无需扫描整个表。MySQL中的索引可以显著提升查询速度,使数据库操作更加高效。索引的发展经历了从无索引、简单索引到B-树、哈希索引、位图索引、全文索引等多个阶段。
50 3
Mysql(4)—数据库索引
|
1天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
12 2