HarperDB 和 Java 入门:您的第一次“Hello, World”集成

在本文中,了解 HarperDB 如何与 Java 集成作为构建实时数据密集型应用程序的选择。

在当今数据驱动的世界中,寻求高效、灵活的数据库解决方案是开发人员和企业不断追求的目标。HarperDB 就是这样的解决方案之一。HarperDB 是一种现代化的多功能数据库管理系统,具有简单性、速度和可扩展性。在本文中,我们将深入探讨 HarperDB 的世界,探讨它为何受到欢迎,以及是什么使其成为开发人员和组织的一个令人信服的选择。

此外,我们将迈出将 HarperDB 与Java编程语言集成的第一步。Java 是一种广泛采用的、健壮的、独立于平台的编程语言,以其在构建各种应用程序方面的可靠性而闻名。通过弥合 HarperDB 和 Java 之间的差距,我们将释放无缝管理和访问数据的许多可能性。

因此,请与我们一起踏上这段旅程,我们将揭开 HarperDB 的面纱,并开始与纯 Java 的首次集成。了解这种组合如何帮助您构建高效且响应迅速的应用程序、简化数据管理并将您的开发项目提升到新的水平。

HarperDB:现代数据库解决方案

HarperDB 将传统功能的简单性与现代应用程序所需的功能和灵活性融为一体。从本质上讲,HarperDB 是一个全球分布式边缘应用程序平台,由边缘数据库、流代理和用户定义的应用程序组成,具有接近零的延迟、巨大的成本节省和卓越的开发人员体验。这种多功能性使其成为企业和开发人员应对管理不同数据源的复杂性的选择。

HarperDB 可以在从边缘到云的任何地方运行,并具有用户友好的管理界面,使任何技能水平的开发人员都能快速启动和运行。与许多需要大量设置、配置和数据库管理专业知识的传统数据库不同,HarperDB 简化了这些流程。这种简单性缩短了学习曲线并节省了宝贵的开发时间,使团队能够专注于构建应用程序而不是管理数据库。

性能对于任何数据库系统都至关重要,尤其是在当今的实时和数据密集型应用程序中。HarperDB 的架构专为速度和规模而设计,确保数据检索和处理以闪电般的速度进行。HarperDB 提供水平可扩展性,允许您随着数据的增长无缝添加资源。 

HarperDB 不仅仅将数据分类到预定义的结构中。这种灵活性在当今的数据环境中非常宝贵,因为信息的格式多种多样。借助 HarperDB,您可以按照符合应用程序独特需求的方式存储、查询和分析数据,而不受严格模式的限制。

HarperDB 通过多种方式实现成本节约。易于使用和低维护要求意味着运营费用的降低。此外,HarperDB 可以使用更少的硬件提供与现有解决方案相同的吞吐量(或者使您能够使用相同数量的硬件并获得更高的吞吐量)。

随着我们深入研究 HarperDB 与 Java 的集成,我们将释放该数据库系统的潜力,并探索它如何将您的数据项目提升到新的高度。

本地安装 HarperDB

在我们探索 HarperDB 及其与 Java 的集成时,第一步是在本地安装 HarperDB。虽然有云版本可用,但本文重点介绍本地安装,以便为您提供实践体验。

您可以从此处(docs.harperdb.io/docs/install-harperdb)的官方文档中选择您喜欢的风格和安装方法。不过,为了简单起见,我们将演示如何使用流行的容器化平台 Docker 设置 HarperDB。

Docker安装

Docker简化了在容器化环境中安装和运行 HarperDB 的过程。请注意,以下 Docker 命令仅用于演示目的,不应在生产中使用。在生产中,您应该遵循保护数据库凭据的最佳实践。

以下是如何使用简单的用户名和密码在 Docker 容器中运行 HarperDB:

docker run -d \
  -e HDB_ADMIN_USERNAME=root \
  -e HDB_ADMIN_PASSWORD=password \
  -e HTTP_THREADS=4 \
  -p 9925:9925 \
  -p 9926:9926 \
  harperdb/harperdb

让我们分解一下这个命令的作用:

  • -d:以分离模式运行容器(在后台)

  • -e HDB_ADMIN_USERNAME=root:将管理员用户名设置为root(您可以更改此设置)

  • -e HDB_ADMIN_PASSWORD=password:将管理员密码设置为password(请记住在生产中使用可靠且安全的密码)

  • -e HTTP_THREADS=4:配置处理请求的HTTP线程数

  • -p 9925:9925and -p 9926:9926:将容器的内部端口映射9925到9926主机上的相应端口

此本地安装将作为探索 HarperDB 的功能及其与 Java 集成的基础。在后续部分中,我们将更深入地了解 HarperDB 的使用并将其与 Java 连接,以利用其功能来构建健壮的数据驱动应用程序。

在 HarperDB 中创建架构、表和字段

“dev”现在我们已经在本地运行 HarperDB,让我们创建一个架构和表并定义架构和表的字段“person”。我们将使用 HTTP 请求执行这些操作。“root”请注意,这些请求中的授权标头使用带有用户名和密码的主要身份验证方法“password”。在生产环境中,始终确保安全的身份验证方法。

要开始在本地使用 HarperDB,我们必须创建一个模式、定义一个表并指定其字段。这些操作可以通过HTTP请求来执行。在我们的示例中,我们将创建一个dev架构和一个包含、和列的"person"表。我们将使用命令来实现此目的。"id""name""age"curl

在运行这些命令之前,请确保您的 HarperDB Docker 容器已启动并正在运行,如前所述。

创建架构('dev'):

curl --location --request POST 'http://localhost:9925/' \
--header 'Authorization: Basic cm9vdDpwYXNzd29yZA==' \
--header 'Content-Type: application/json' \
--data-raw '{
    "operation": "create_schema",
    "schema": "dev"
}'

此命令发送一个 HTTPPOST请求来创建dev架构。授权标头包含基本身份验证凭据(Base64 编码的用户名和密码)。替换cm9vdDpwYXNzd29yZA==为您的 Base64 编码凭据。

创建一个以“id”作为哈希属性的“person”表:

curl --location 'http://localhost:9925' \
--header 'Authorization: Basic cm9vdDpwYXNzd29yZA==' \
--header 'Content-Type: application/json' \
--data '{
    "operation": "create_table",
    "schema": "dev",
    "table": "person",
    "hash_attribute": "id"
}'

此命令在架构中创建一个"person"表"dev"并将该"id"列指定为哈希属性。用于"hash_attribute"分布式数据存储和检索。

在“person”表中创建“name”和“age”列:

curl --location 'http://localhost:9925' \
--header 'Authorization: Basic cm9vdDpwYXNzd29yZA==' \
--header 'Content-Type: application/json' \
--data '{
    "operation": "create_attribute",
    "schema": "dev",
    "table": "person",
    "attribute": "name"
}'

curl --location 'http://localhost:9925' \
--header 'Authorization: Basic cm9vdDpwYXNzd29yZA==' \
--header 'Content-Type: application/json' \
--data '{
    "operation": "create_attribute",
    "schema": "dev",
    "table": "person",
    "attribute": "age"
}'

这两个命令在表中创建"name"和"age"列"person"。这些列定义了数据的结构。

通过这些 HTTP 请求,您已在本地 HarperDB 实例中设置架构、表和列。您现在已准备好开始处理数据并探索如何将 HarperDB 与 Java 集成以实现强大的数据驱动应用程序。

探索 HarperDB 集成的 Java 代码

本次会议将探讨将 HarperDB 集成到普通 Java SE(标准版)应用程序中的 Java 代码。我们将使用、和字段创建一个简单的“Person”实体。我们必须建立一个 Maven 项目并包含 HarperDB JDBC 驱动程序才能启动。“id”“name”“age”

第1步:创建Maven项目

  • 首先使用 Maven 快速入门原型创建一个新的Maven项目。您可以使用以下命令来创建项目:

mvn archetype:generate -DgroupId=com.example -DartifactId=harperdb-demo -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
  • 该命令将生成一个基本的 Maven 项目结构。

  • 导航到项目根目录。

步骤 2:包含 HarperDB JDBC 驱动程序

  • 从官方 HarperDB 资源页面下载 HarperDB JDBC 驱动程序:HarperDB Drivers。(studio.harperdb.io/resources/drivers)

  • 解压下载的 ZIP 文件的内容。

  • 在项目根目录中创建一个名为lib的新文件夹。

  • 从提取的内容中复制 HarperDB JDBC 驱动程序 JAR 文件并将其粘贴到lib文件夹中。

步骤 3:更新 Maven POM 文件

  • 打开项目中的pom.xml文件。

  • 添加以下 Maven 依赖项以包含 HarperDB JDBC 驱动程序。确保调整<version>和<systemPath>来匹配您的 JAR 文件:

<dependency>
    <groupId>cdata.jdbc.harperdb</groupId>
    <artifactId>cdata.jdbc.harperdb</artifactId>
    <scope>system</scope>
    <version>1.0</version>
    <systemPath>${project.basedir}/lib/cdata.jdbc.harperdb.jar</systemPath>
</dependency>

此依赖项指示 Maven 将 HarperDB JDBC 驱动程序 JAR 文件包含为项目的系统依赖项。

为 HarperDB 集成创建人员记录和 PersonDAO 类

我们将创建一个Person记录,这是 Java 中引入的用于数据建模的不可变类。我们还将实现一个PersonDAO类,以使用直接 JDBC API 调用与 HarperDB 进行交互。

1. 创建人员记录

首先,我们Person用三个属性定义记录:id、name和age。of我们还提供了用于创建实例的静态工厂方法Person。equals()该记录通过自动生成构造函数、访问器方法和hashCode()实现来简化数据建模并减少代码。

public record Person(String id, String name, Integer age) {
    
    public static Person of(String name, Integer age) {
        return new Person(null, name, age);
    }
}

2.创建PersonDAO类

接下来,我们创建该类PersonDAO,负责使用 HarperDB JDBC 驱动程序进行数据库操作。此类提供了插入、按 ID 查找、删除和检索Person数据库中所有记录的方法。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.Properties;

public class PersonDAO {


    private static final String INSERT = "INSERT INTO dev.person (name, age) VALUES (?, ?)";
    private static final String SELECT = "select * From dev.person";

    private static final String FIND_ID = "select * From dev.person where id = ?";

    private static final String DELETE = "delete From dev.person where id = ?";

    public void insert(Person person) throws SQLException {
        try(Connection connection = createConnection()){
            var statement = connection.prepareStatement(INSERT);
            statement.setString(1, person.name());
            statement.setInt(2, person.age());
            statement.execute();
        }
    }

    public Optional<Person> findById(String id) throws SQLException {
        try(Connection connection = createConnection()) {
            var statement = connection.prepareStatement(FIND_ID);
            statement.setString(1, id);
            var resultSet = statement.executeQuery();
            if(resultSet.next()) {
                var name = resultSet.getString("name");
                var age = resultSet.getInt("age");
                return Optional.of(new Person(id, name, age));
            }
            return Optional.empty();
        }
    }

    public void delete(String id) throws SQLException {
        try(Connection connection = createConnection()) {
            var statement = connection.prepareStatement(DELETE);
            statement.setString(1, id);
            statement.execute();
        }
    }

    public List<Person> findAll() throws SQLException {
        List<Person> people = new ArrayList<>();
        try(Connection connection = createConnection()) {
            var statement = connection.prepareStatement(SELECT);
            var resultSet = statement.executeQuery();
            while (resultSet.next()) {
                var id = resultSet.getString("id");
                var name = resultSet.getString("name");
                var age = resultSet.getInt("age");
                people.add(new Person(id, name, age));
            }
        }
        return people;
    }

    static Connection createConnection() throws SQLException {
        var properties = new Properties();
        properties.setProperty("Server","http://localhost:9925/");
        properties.setProperty("User","root");
        properties.setProperty("Password","password");
        return DriverManager.getConnection("jdbc:harperdb:", properties);
    }
}

记录Person和PersonDAO类就位后,您现在可以使用 Java 与 HarperDB 进行交互,执行插入、按 ID 查找、删除和Person从数据库检索记录等操作。调整方法中的数据库连接属性createConnection以匹配您的 HarperDB 设置。

使用 HarperDB 集成执行 Java 应用程序

使用 Person 记录和 PersonDAO 类后,您可以执行 Java 应用程序以与 HarperDB 交互。这是用于实现应用程序的 App 类:

import java.sql.SQLException;
import java.util.List;

public class App {

    public static void main(String[] args) throws SQLException {
        PersonDAO dao = new PersonDAO();
        dao.insert(Person.of( "Ada", 10));
        dao.insert(Person.of("Poliana", 20));
        dao.insert(Person.of("Jhon", 30));
        List<Person> people = dao.findAll();
        people.forEach(System.out::println);
        System.out.println("Find by id: ");
        var id = people.get(0).id();
        dao.findById(id).ifPresent(System.out::println);
        dao.delete(id);
        System.out.println("After delete: is present? " + dao.findById(id).isPresent());
    }

    private App() {
    }

}

在本App课程中:

  1. 我们创建该类的实例PersonDAO来与数据库交互。

  2. 我们Person使用该dao.insert(...)方法插入样本记录。

  3. 我们Person使用dao.findAll()并打印它们来检索所有记录。

  4. 我们通过 ID 查找Person并使用 打印它dao.findById(...)。

  5. 我们Person使用 ID删除一个dao.delete(...),然后检查它是否仍在数据库中。

执行此类App将针对您的 HarperDB 数据库执行这些操作,演示您的 Java 应用程序如何使用数据库操作的Person记录和类与 HarperDB 进行交互。PersonDAO确保 HarperDB 正在运行,并且 HarperDB JDBC 驱动程序在您的项目中进行了充分配置,如本文前面所述。

结论

在探索 HarperDB 及其与 Java 集成的过程中,我们发现了一种多功能的现代数据库解决方案,它结合了简单性、速度和灵活性,可以满足广泛的数据管理需求。在我们的结论中,我们回顾了我们所学到的知识,并强调了可用于进一步探索的资源。

下一步

  • 文档:要更深入地了解 HarperDB 的特性和功能,请参阅 HarperDB 文档中的官方文档(本文前面有链接)。

  • 示例代码:在HarperDB 示例 GitHub 存储库中探索将 HarperDB 与 Java 集成的实际示例和示例代码。

将 HarperDB 合并到您的 Java 应用程序中,使您能够高效管理数据、实时做出明智的决策并构建强大的数据驱动解决方案。无论您是开发物联网应用程序、网络和移动应用程序,还是全球游戏解决方案,HarperDB 都是一个现代且易于访问的选择。


文章来源地址https://www.toymoban.com/diary/java/502.html

到此这篇关于HarperDB 和 Java 入门:您的第一次“Hello, World”集成的文章就介绍到这了,更多相关内容可以在右上角搜索或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

原文地址:https://www.toymoban.com/diary/java/502.html

如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请联系站长进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用
上一篇 2023年11月03日 15:09
下一篇 2023年11月03日 15:28

相关文章

  • java第一次作业(一)

    知识点: 考查java的输入格式以及for循环 java格式 注意Main与main 代码: 知识点: for循环 数组 /输入数组 /数组比大小 代码: 知识点: println与print区别:println是输完之后转行 重点: 多重for循环 代码: 知识点: 调用函数 booean函数 重点: Scanner输入 代码: 知识点: 最后又有

    2024年03月25日
    浏览(63)
  • java第一次作业(二)

     思路: 运用expression的字符串输出 重点: expression输出 代码: 知识点: expression输出 思路: 充分运用两个for循环,一个掌控行数,一个掌控输出的数字 代码: 知识点: 输入 数字所占空格 换行 思路: 这种复杂的配凑问题,不要去想枚举去解,充分利用for循环语句 像这题

    2024年04月11日
    浏览(76)
  • Java第一次blog

    7-1 答题判题程序-1 这些题目主要用到 对象与类的处理: 对象是现实世界或抽象概念中的实体在计算机程序中的表示。 类则是具有相同属性和方法的对象的集合,是创建对象的模板。通过类,我们可以定义一类对象的共同特征和行为。 1. 字符串处理: 需要对输入的题目信息

    2024年04月22日
    浏览(53)
  • 【入门/小白向】第一次在Linux/Ubuntu终端上使用Git拉取代码,该怎么做?保姆教程,步骤分解。

    【Step.1】 安装 git 安装完成后执行下句,可以看到安装版本: 【Step.2】 配置邮箱 (git网站账户注册的邮箱,如bob2023@yy.com) 和用户名 (任取,如bob): 随后可执行下句,查看是否配置成功: 实例执行如下图:  【 Step.3 】生成 SSH 密钥,用于远程访问 git (下面使用的公钥算法是

    2024年02月05日
    浏览(54)
  • 红袖添香,绝代妖娆,Ruby语言基础入门教程之Ruby3基础语法,第一次亲密接触EP01

    书接上回,前一篇我们在全平台构建好了Ruby3的开发环境,现在,可以和Ruby3第一次亲密接触了。 Ruby是一门在面向对象层面无所不用其极的解释型编程语言。 我们可以把编写Ruby代码看作是一场行为上的艺术,编码就像跳舞一样,Ruby的每一步都很优雅,几乎没有一步是多余的

    2024年01月20日
    浏览(60)
  • ASM Java字节码操作框架入门学习 输出Hello World

    查看字节码信息 方法调用 invokestatic:用于调用静态方法。该指令会根据方法的类名、方法名和方法描述符进行方法查找和调用。 invokespecial:用于调用私有方法、构造方法和父类方法。该指令会根据方法的类名、方法名和方法描述符进行方法查找和调用。 invokevirtual:用于调

    2024年02月13日
    浏览(47)
  • HarmonyOS第一课运行Hello World

    俗话说,工欲善其事必先利其器。鸿蒙第一课,我们先从简单的 Hello World 运行说起。要先运行 Hello World ,那么我们必须搭建 HarmonyOS 的开发环境。 在 HarmonyOS 应用开发学习之前,需要进行一些准备工作,首先需要完成开发工具 DevEco Studio 的下载与安装以及环境配置。 DevEco

    2024年02月08日
    浏览(45)
  • jQuery第一次接触

    jQuery是一个轻量级js库 1.下载jquery库,网址Download jQuery | jQuery npm i jquery 2.还可以从cdn中载入jquery script src=\\\"https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js\\\" 3.j代表js,query代表查询,jQuery可以进行查询的js语言,主要用来查询html元素 4.基础语法$(selector).action(),其中selector代表要进行操

    2024年02月12日
    浏览(46)
  • docker第一次作业

    docker第一次作业 1.安装docker服务,配置镜像加速器  yum install -y yum-utils device-mapper-persistent-data lvm2 y um-config-manager --add-repo https: //mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo sed -i \\\'s+download.docker.com+mirrors.aliyun.com/docker-ce+\\\'  /etc/yum.repos.d/docker-ce.repo yum makecache fast yum -y install docke

    2024年02月12日
    浏览(44)
  • 第一次面试复盘

    这个秋招到目前为止第一次拿到了面试机会,虽然是小公司,但是人家是有官网的!!!很爱!先赶紧复盘一下,因为还有很多笔试没有复盘。 你们的数学建模解决了什么问题?你觉得你们为什么能拿到这个成绩 说下对java这门语言的了解 它是一种面向对象的编程语言,所以

    2024年01月22日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包