Spring Boot集成hana快速入门demo

1.什么是hana?

SAP HANA(高性能分析工具)是一款将数据存储在内存而不是硬盘的多模型数据库。这款列式内存数据库支持企业在同一系统中执行快速的事务处理和先进的分析处理。为什么 SAP HANA 如此重要?因为该产品支持企业近乎零延迟地处理海量数据,即时查询数据,并真正实现由数据驱动。SAP HANA 拥有独特的优势。该平台将数据存储在主内存的列存储表中,并且集联机分析处理 (OLAP) 和联机事务处理 (OLTP) 于一体,处理速度比目前市场上的其他数据库管理系统 (DBMS) 快很多

什么是内存数据库?

内存数据库 (IMDB) 是一种将数据存储在计算机主内存 (RAM),而不是传统磁盘或固态硬盘 (SSD) 的数据库。虽然如今大多数数据库都增加了许多内存功能,但从根本上来说还是基于磁盘的存储数据库。SAP HANA 则是从零开始构建,主要目的是利用内存处理数据,其次才是利用其他必要的存储机制来平衡性能和成本。从内存中检索数据要比从磁盘或固态硬盘中检索数据快得多,因此 SAP HANA 可以实现瞬时响应。

SAP HANA 有多快?

  •  比传统数据库快 3600 倍
  • 1 秒内给出查询结果
  • 每核每秒扫描 35 亿次
  • 每核每秒执行 1,500 万次聚合

SAP HANA 架构

SAP HANA 采用列式内存架构,支持快速执行查询和事务处理。除此之外,该架构还提供数据库管理、应用开发、高级分析处理和灵活的数据虚拟化功能。

67515

2.hana环境搭建

pull images

docker pull saplabs/hanaexpress:latest

run

docker run -p 39013:39013 -p 39017:39017 -p 39041-39045:39041-39045 -p 1128-1129:1128-1129 -p 59013-59014:59013-59014 -v D:/IdeaProjects/ETFramework/hana/docker/hana/data/sap:/hana/mounts --name hana1 saplabs/hanaexpress:latest --passwords-url file:///hana/mounts/passwd.json --agree-to-sap-license

Connect via JDBC driver

To log into your system database via JDBC, use the following command:

jdbc:sap://<ip_address>:39017/?databaseName=<database_name>

To log into your tenant database via JDBC, use the following command:

jdbc:sap://<ip_address>:39041/?databaseName=<tenant_name>
passwd.json

${path}/hana/data/sap/passwd.json

{
"system_user_password" : "Hyd20240531",
"default_tenant_system_user_password" : "Hyd20240531"
}

默认用户名

system_user: SYSTEM
default_tenant_system_user:SYSTEM

init data

-- 创建新数据库
CREATE DATABASE demo;

-- 授予权限给特定用户
GRANT ALL PRIVILEGES ON DATABASE demo TO my_user;

-- 创建表
CREATE TABLE Employees (
EmployeeID INT PRIMARY KEY,
FirstName NVARCHAR(50),
LastName NVARCHAR(50),
Department NVARCHAR(50),
Salary DECIMAL(10, 2)
);

-- 插入测试数据
INSERT INTO Employees (EmployeeID, FirstName, LastName, Department, Salary)
SELECT 1, 'John', 'Doe', 'Engineering', 60000.00 FROM DUMMY UNION ALL
SELECT 2, 'Jane', 'Smith', 'HR', 55000.00 FROM DUMMY UNION ALL
SELECT 3, 'Alice', 'Johnson', 'Finance', 65000.00 FROM DUMMY UNION ALL
SELECT 4, 'Bob', 'Brown', 'Marketing', 58000.00 FROM DUMMY UNION ALL
SELECT 5, 'Emma', 'Lee', 'Engineering', 62000.00 FROM DUMMY;

3.代码工程

实验目标:实现对hana数据库的读写

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>springboot-demo</artifactId>
        <groupId>com.et</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>hana</artifactId>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>
    <dependencies>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-autoconfigure</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <!-- Spring Boot Starter Data JPA -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <!-- SAP HANA JDBC Driver -->
        <dependency>
            <groupId>com.sap.cloud.db.jdbc</groupId>
            <artifactId>ngdbc</artifactId>
            <version>2.14.7</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
    </dependencies>
</project>

controller

package com.et.hana.controller;

import com.et.hana.entity.Employee;
import com.et.hana.service.EmployeeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/employees")
public class EmployeeController {

    @Autowired
    private EmployeeService employeeService;

    @GetMapping
    public List<Employee> getAllEmployees() {
        return employeeService.getAllEmployees();
    }

    @PostMapping
    public Employee createEmployee(@RequestBody Employee employee) {
        return employeeService.saveEmployee(employee);
    }

    // other CRUD endpoints
}

service

package com.et.hana.service;

import com.et.hana.entity.Employee;
import com.et.hana.reponsitory.EmployeeRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class EmployeeService {

    @Autowired
    private EmployeeRepository employeeRepository;

    public List<Employee> getAllEmployees() {
        return employeeRepository.findAll();
    }

    public Employee saveEmployee(Employee employee) {
        return employeeRepository.save(employee);
    }

    // other CRUD methods
}

entity

package com.et.hana.entity;

import lombok.Data;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
@Data
public class Employee {
    
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    private String position;

    // getters and setters
}

reponsitory

package com.et.hana.reponsitory;

import com.et.hana.entity.Employee;
import org.springframework.data.jpa.repository.JpaRepository;

public interface EmployeeRepository extends JpaRepository<Employee, Long> {
}

application.yaml

spring.datasource.url=jdbc:sap://localhost:39041/?currentschema=DEMO
spring.datasource.username=System
spring.datasource.password=Hyd20240531
spring.datasource.driver-class-name=com.sap.db.jdbc.Driver

# JPA (optional)
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.HANARowStoreDialect

以上只是一些关键代码,所有代码请参见下面代码仓库

代码仓库

4.测试

启动spring boot 应用

写入数据

post http://localhost:8080/employees

{
 "id":1,
 "name":"harries",
 "position":"manager"
}

读数据

get http://127.0.0.1:8080/employees

[{"id":1,"name":"harries","position":"manager"}]

5.引用

  • 29
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: SAP S/4HANA GBI 3.3业务流程集成是一套完整的 SAP 业务流程,旨在协助企业有效地管理其核心业务,从而提高生产力和盈利能力。通过此业务流程集成,企业能够实现对供应链、销售、采购、财务等多个领域的一体化管理和协同工作,提高信息共享的效率和准确性,降低成本,提升效益。 GBI 3.3业务流程集成包括多个核心模块,如采购管理、销售管理、库存管理、财务会计等。这些模块间相互关联,能够实现企业核心业务流程的全面管理。同时,G BI 3.3业务流程集成支持了企业数字化转型和智能化升级,通过集成机器学习、物联网、大数据等技术,帮助企业实现业务数据的快速分析和处理,提高企业运营的智能化水平。 总之,SAP S/4HANA GBI 3.3业务流程集成是一套高度集成的企业管理解决方案,旨在提高企业业务流程的效率和准确性,在数字化转型和智能化升级方面给予企业有力的支持,是现代企业经营管理领域不可或缺的重要工具。 ### 回答2: SAP S/4HANA GBI3.3业务流程集成是一项涵盖多个业务流程的系统,它支持企业的生产、物料管理、财务会计等业务流程的整合。该集成系统基于SAP S/4HANA平台,结合了现代企业管理的最佳实践,能够将企业的业务过程和决策支持系统有机地结合起来,实现业务的高效协同。 在SAP S/4HANA GBI3.3业务流程集成中,企业可以通过采用模块化的组件方式搭建自己的业务流程系统,实现多种业务流程的高效整合。例如,企业可以通过采购管理模块来实现采购订单管理、供应商管理、收货管理等业务流程的整合;通过生产计划模块来实现生产计划、物料需求计划、生产订单等业务流程的整合;通过销售管理模块来实现销售订单管理、客户管理、发货管理等业务流程的整合。 SAP S/4HANA GBI3.3业务流程集成的优势在于它能够更好地支持企业的决策制定和业务流程的协同。它能够针对企业的业务特点进行定制化,支持企业建立更加高效的业务流程管理体系,进而提高企业的运营效率和管理水平。同时,SAP S/4HANA GBI3.3业务流程集成还支持企业的数字化转型,能够为企业提供更加智能化的业务决策支持,实现企业从传统业务模式向数字化化业务模式的转型。 ### 回答3: SAP S/4HANA GBI3.3业务流程集成是SAP S/4HANA企业资源计划系统中包含的标准业务流程。该系统由徐声震编辑,旨在帮助企业更好地管理其业务流程,并提高生产效率和业务决策的精度。 该系统中包含了许多标准业务流程,例如需求计划、采购、销售、生产、物料管理等。这些流程都是通过SAP S/4HANA平台运行的,可以在不同部门之间进行无缝集成,帮助企业实现更高效的业务运作模式。 此外,SAP S/4HANA GBI3.3系统还包括高级业务分析工具,如SAP Lumira和SAP Predictive Analytics。这些工具可以帮助企业对业务数据进行深入分析,并提供明确的数据驱动业务决策。 总的来说,SAP S/4HANA GBI3.3业务流程集成系统是一个功能强大但易于使用的平台,可以帮助企业提高生产效率和业务决策的精度。无论是作为中小型企业,还是大企业,都可以受益于这种紧密集成的企业资源计划系统。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值