diff --git a/persistence-modules/rethinkdb/pom.xml b/persistence-modules/rethinkdb/pom.xml
new file mode 100644
index 0000000000..17c7036ed3
--- /dev/null
+++ b/persistence-modules/rethinkdb/pom.xml
@@ -0,0 +1,53 @@
+
+
+ 4.0.0
+ rethinkdb
+ rethinkdb
+ Code snippets for RethinkDB articles
+
+
+ com.baeldung
+ parent-boot-2
+ 0.0.1-SNAPSHOT
+ ../../parent-boot-2
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+ com.rethinkdb
+ rethinkdb-driver
+ 2.4.4
+
+
+
+ org.projectlombok
+ lombok
+ provided
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+
+
+ 17
+
+
+
diff --git a/persistence-modules/rethinkdb/src/test/java/com/baeldung/rethinkdb/InsertIntegrationTest.java b/persistence-modules/rethinkdb/src/test/java/com/baeldung/rethinkdb/InsertIntegrationTest.java
new file mode 100644
index 0000000000..244959d854
--- /dev/null
+++ b/persistence-modules/rethinkdb/src/test/java/com/baeldung/rethinkdb/InsertIntegrationTest.java
@@ -0,0 +1,62 @@
+package com.baeldung.rethinkdb;
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import java.util.Map;
+
+import static com.rethinkdb.RethinkDB.r;
+
+/**
+ * Some tests demonstrating inserting data.
+ */
+public class InsertIntegrationTest extends TestBase {
+ /**
+ * Create a table for the tests.
+ */
+ @BeforeEach
+ public void createTable() {
+ r.db(DB_NAME).tableCreate(tableName).run(conn);
+ }
+
+ /**
+ * Insert a single simple record into the database.
+ */
+ @Test
+ public void insertSimpleRecord() {
+ r.db(DB_NAME).table(tableName)
+ .insert(
+ r.hashMap()
+ .with("name", "Baeldung")
+ )
+ .run(conn);
+ }
+
+ @Test
+ public void insertMap() {
+ r.db(DB_NAME).table(tableName)
+ .insert(
+ Map.of("name", "Baeldung")
+ )
+ .run(conn);
+ }
+
+ @Test
+ public void insertComplex() {
+ r.db(DB_NAME).table(tableName)
+ .insert(
+ r.hashMap()
+ .with("name", "Baeldung")
+ .with("articles", r.array(
+ r.hashMap()
+ .with("name", "String Interpolation in Java")
+ .with("url", "https://www.baeldung.com/java-string-interpolation"),
+ r.hashMap()
+ .with("name", "Access HTTPS REST Service Using Spring RestTemplate")
+ .with("url", "https://www.baeldung.com/spring-resttemplate-secure-https-service")
+ )
+ )
+ )
+ .run(conn);
+ }
+}
diff --git a/persistence-modules/rethinkdb/src/test/java/com/baeldung/rethinkdb/QueryIntegrationTest.java b/persistence-modules/rethinkdb/src/test/java/com/baeldung/rethinkdb/QueryIntegrationTest.java
new file mode 100644
index 0000000000..263dda9bc6
--- /dev/null
+++ b/persistence-modules/rethinkdb/src/test/java/com/baeldung/rethinkdb/QueryIntegrationTest.java
@@ -0,0 +1,81 @@
+package com.baeldung.rethinkdb;
+
+import com.rethinkdb.net.Result;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+import static com.rethinkdb.RethinkDB.r;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+/**
+ * Some tests demonstrating querying data.
+ */
+public class QueryIntegrationTest extends TestBase {
+ /**
+ * Create a table for the tests.
+ */
+ @BeforeEach
+ public void createTable() {
+ r.db(DB_NAME).tableCreate(tableName).run(conn);
+
+ r.db(DB_NAME).table(tableName)
+ .insert(
+ r.hashMap()
+ .with("id", "article1")
+ .with("name", "String Interpolation in Java")
+ .with("url", "https://www.baeldung.com/java-string-interpolation")
+ ).run(conn);
+ r.db(DB_NAME).table(tableName)
+ .insert(
+ r.hashMap()
+ .with("id", "article2")
+ .with("name", "Access HTTPS REST Service Using Spring RestTemplate")
+ .with("url", "https://www.baeldung.com/spring-resttemplate-secure-https-service")
+ ).run(conn);
+ }
+
+ @Test
+ public void listAll() {
+ Result