diff --git a/vavr/pom.xml b/vavr/pom.xml
index 5356417b3efd..cbf2a37ec9bf 100644
--- a/vavr/pom.xml
+++ b/vavr/pom.xml
@@ -6,10 +6,11 @@
1.0
vavr
-
- com.baeldung
- parent-modules
- 1.0.0-SNAPSHOT
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 2.0.0.BUILD-SNAPSHOT
+
@@ -24,9 +25,36 @@
junit
${junit.version}
+
+
+ org.springframework.boot
+ spring-boot-starter-data-jpa
+
+
+
+ com.h2database
+ h2
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+
+
+
+
+ spring-snapshot
+ Spring Snapshot Repository
+ https://repo.spring.io/snapshot
+
+ true
+
+
+
+ 1.8
0.9.0
4.12
diff --git a/vavr/src/main/java/com/baeldung/Application.java b/vavr/src/main/java/com/baeldung/Application.java
new file mode 100644
index 000000000000..d58049fb352b
--- /dev/null
+++ b/vavr/src/main/java/com/baeldung/Application.java
@@ -0,0 +1,11 @@
+package com.baeldung;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class Application {
+ public static void main(String[] args) {
+ SpringApplication.run(Application.class, args);
+ }
+}
diff --git a/vavr/src/main/java/com/baeldung/repositories/VavrUserRepository.java b/vavr/src/main/java/com/baeldung/repositories/VavrUserRepository.java
new file mode 100644
index 000000000000..a3dd7937f786
--- /dev/null
+++ b/vavr/src/main/java/com/baeldung/repositories/VavrUserRepository.java
@@ -0,0 +1,18 @@
+package com.baeldung.repositories;
+
+import org.springframework.data.repository.Repository;
+
+import com.baeldung.vavr.User;
+
+import io.vavr.collection.Seq;
+import io.vavr.control.Option;
+
+public interface VavrUserRepository extends Repository {
+
+ Option findById(long id);
+
+ Seq findByName(String name);
+
+ User save(User user);
+
+}
diff --git a/vavr/src/main/java/com/baeldung/vavr/User.java b/vavr/src/main/java/com/baeldung/vavr/User.java
new file mode 100644
index 000000000000..69dd9aea24f8
--- /dev/null
+++ b/vavr/src/main/java/com/baeldung/vavr/User.java
@@ -0,0 +1,32 @@
+package com.baeldung.vavr;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+
+@Entity
+public class User {
+
+ @Id
+ @GeneratedValue(strategy = GenerationType.AUTO)
+ private long id;
+
+ private String name;
+
+ public long getId() {
+ return id;
+ }
+
+ public void setId(long id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+}
diff --git a/vavr/src/test/java/com/baeldung/vavr/repositories/VavrRepositoryIntegrationTest.java b/vavr/src/test/java/com/baeldung/vavr/repositories/VavrRepositoryIntegrationTest.java
new file mode 100644
index 000000000000..c2e9f377dd7d
--- /dev/null
+++ b/vavr/src/test/java/com/baeldung/vavr/repositories/VavrRepositoryIntegrationTest.java
@@ -0,0 +1,47 @@
+package com.baeldung.vavr.repositories;
+
+import com.baeldung.Application;
+import com.baeldung.repositories.VavrUserRepository;
+import com.baeldung.vavr.User;
+
+import io.vavr.collection.Seq;
+import io.vavr.control.Option;
+
+import org.junit.Test;
+import org.junit.Before;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import static org.junit.Assert.*;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = Application.class)
+public class VavrRepositoryIntegrationTest {
+
+ @Autowired
+ private VavrUserRepository userRepository;
+
+ @Before
+ public void setup() {
+ User user1 = new User();
+ user1.setName("John");
+ User user2 = new User();
+ user2.setName("John");
+
+ userRepository.save(user1);
+ userRepository.save(user2);
+ }
+
+ @Test
+ public void whenAddUsers_thenGetUsers() {
+ Option user = userRepository.findById(1L);
+ assertFalse(user.isEmpty());
+ assertTrue(user.get().getName().equals("John"));
+
+ Seq users = userRepository.findByName("John");
+ assertEquals(2, users.size());
+ }
+
+}