抽象的
对象关系映射(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
类包括四个字段:
- 自动生成的唯一标识符。
- 格式的日期yyyy-mm-dd。
- 库存符号。
- 价格。
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对象(ADBE
被ABBV
替换):
...
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 Fadatare在Hibernate CRUD Example上的视频和GitHub存储库来启发本文中的代码示例。