快速提示:与单骨架一起使用Hibernate
#java #singlestoredb #hibernate #orm

抽象的

对象关系映射(ORM)允许从面向对象的编程语言(OOPL)访问关系DBMS。如今,可以提供各种各样的开源和商业ORM,并支持许多不同的OOPL。在这篇简短的文章中,我们将使用SinglestoredB与一个流行的开源ORM,称为Hibernate。

本文中使用的Java代码文件可在GitHub中找到。

介绍

在这篇简短的文章中,我们将对某些tick数据执行创建,读取,更新和删除(CRUD)操作。我们将在Java写几个包裹。我们将使用Hibernate用SinglestoredB来管理我们的Java对象。

创建一个SinglestoredB云帐户

previous article显示了创建免费的SinglestoredB云帐户所需的步骤。我们将使用 Hibernate Demo Group 作为我们的工作区组名称, Hibernate-Demo 作为我们的工作空间名称。我们会记下我们的密码主机名称。

创建一个Maven项目

要快速测试,我们将使用maven并从命令行构建和运行代码。

pom.xml

pom.xml文件非常简单,带有Java版本的详细信息,这是两个主要依赖项,我们想构建具有所有依赖项的单个JAR文件:

<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.s2</groupId>
  <artifactId>s2-app</artifactId>
  <version>1.0-SNAPSHOT</version>
  <properties>
    <maven.compiler.target>1.8</maven.compiler.target>
    <maven.compiler.source>1.8</maven.compiler.source>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
  <dependencies>
    <!-- https://mvnrepository.com/artifact/com.mysql/mysql-connector-j -->
    <dependency>
      <groupId>com.mysql</groupId>
      <artifactId>mysql-connector-j</artifactId>
      <version>8.0.31</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-core -->
    <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-core</artifactId>
      <version>5.6.12.Final</version>
    </dependency>
  </dependencies>
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <configuration>
          <archive>
            <manifest>
              <mainClass>fully.qualified.MainClass</mainClass>
            </manifest>
          </archive>
          <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
          </descriptorRefs>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>

滴答课

我们的Tick类包括四个字段:

  1. 自动生成的唯一标识符。
  2. 格式的日期yyyy-mm-dd。
  3. 库存符号。
  4. 价格。

tickdao课

我们将使用数据访问对象(DAO)模式提供CRUD操作。这些将使用交易来确保数据库操作致力于SinglestoredB数据库。

Hibernateutil类

我们的代码将提供连接详细信息。我们需要插入一些值,如下所示:

settings.put(AvailableSettings.DRIVER, "com.mysql.cj.jdbc.Driver");

settings.put(AvailableSettings.URL, "jdbc:mysql://<host>:3306/timeseries_db?createDatabaseIfNotExist=true");

settings.put(AvailableSettings.USER, "admin");

settings.put(AvailableSettings.PASS, "<password>");

我们将用我们的singlestoredB云帐户中的值替换<host><password>

如果数据库timeseries_db不存在,它将被创建。

应用程序类

在我们的应用程序中,我们将执行一些简单的CRUD操作:

  • 创建一些tick对象并将它们保存到singlestoredB。
  • 从singlestoredB中检索所有数据,以验证tick对象是否正确保存。
  • 更新一个股票符号及其价格,然后将其存储在SinglestoredB中。
  • 从singlestoredB中检索所有数据以确认一个tick对象已更新。
  • 从singlestoredb中删除一个tick。
  • 从singlestoredB中检索所有数据以验证一个tick对象已被删除。

我们将使用previous article的一些tick数据。

构建代码

我们可以使用maven从命令行构建代码,如下:

mvn clean compile assembly:single

这将创建一个带有所有依赖项的JAR文件。

运行代码

我们将运行代码,如下:

java -cp target/s2-app-1.0-SNAPSHOT-jar-with-dependencies.jar com.s2.hibernate.util.App

在命令行窗口中,我们应该看到创建三个tick对象的输出:

...
Id = 1 Date = 2013-02-08 Symbol = AAPL Price = 67.8542
Id = 3 Date = 2013-02-08 Symbol = ADBE Price = 39.12
Id = 2 Date = 2013-02-08 Symbol = ABC Price = 46.89
...

更新了一个tick对象(ADBEABBV替换):

...
Id = 2 Date = 2013-02-08 Symbol = ABC Price = 46.89
Id = 1 Date = 2013-02-08 Symbol = AAPL Price = 67.8542
Id = 3 Date = 2013-02-08 Symbol = ABBV Price = 36.25
...

删除了一个tick对象(ABC):

...
Id = 1 Date = 2013-02-08 Symbol = AAPL Price = 67.8542
Id = 3 Date = 2013-02-08 Symbol = ABBV Price = 36.25
...

概括

在这篇简短的文章中,我们使用Hibernate构建并测试了Java应用程序,以对SinglestoredB进行一些简单的CRUD操作。

致谢

我感谢Ramesh FadatareHibernate CRUD Example上的视频和GitHub存储库来启发本文中的代码示例。