diff --git a/libraries-data/pom.xml b/libraries-data/pom.xml
index d19d03b3ff..2c9fb82126 100644
--- a/libraries-data/pom.xml
+++ b/libraries-data/pom.xml
@@ -72,7 +72,7 @@
org.apache.ignite
- ignite-spring
+ ignite-spring-data
${ignite.version}
@@ -192,7 +192,7 @@
3.7.0
5.0
1.0.0
- 2.3.0
+ 2.4.0
2.8.2
\ No newline at end of file
diff --git a/libraries-data/src/main/java/com/baeldung/ignite/spring/IgniteApp.java b/libraries-data/src/main/java/com/baeldung/ignite/spring/IgniteApp.java
new file mode 100644
index 0000000000..c181cdbb3c
--- /dev/null
+++ b/libraries-data/src/main/java/com/baeldung/ignite/spring/IgniteApp.java
@@ -0,0 +1,53 @@
+package com.baeldung.ignite.spring;
+
+import com.baeldung.ignite.spring.config.SpringDataConfig;
+import com.baeldung.ignite.spring.dto.EmployeeDTO;
+import com.baeldung.ignite.spring.repository.EmployeeRepository;
+import org.apache.ignite.Ignite;
+import org.apache.ignite.IgniteCache;
+import org.apache.ignite.Ignition;
+import org.apache.ignite.cache.query.QueryCursor;
+import org.apache.ignite.cache.query.SqlFieldsQuery;
+import org.springframework.context.annotation.AnnotationConfigApplicationContext;
+
+import java.util.List;
+
+/**
+ * Created by Gebruiker on 4/12/2018.
+ */
+public class IgniteApp {
+
+ public static void main (String[] args) {
+ AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
+ context.register(SpringDataConfig.class);
+ context.refresh();
+
+ EmployeeRepository repository = context.getBean(EmployeeRepository.class);
+
+ EmployeeDTO employeeDTO = new EmployeeDTO();
+ employeeDTO.setId(1);
+ employeeDTO.setName("John");
+ employeeDTO.setEmployed(true);
+
+ repository.save(employeeDTO.getId(), employeeDTO);
+
+ EmployeeDTO employee = repository.getEmployeeDTOById(employeeDTO.getId());
+ System.out.println(employee);
+ }
+
+ private void getUsingTheCache(Integer employeeId) {
+
+ Ignite ignite = Ignition.ignite();
+
+ IgniteCache cache = ignite.cache("baeldungCache");
+
+ EmployeeDTO employeeDTO = cache.get(employeeId);
+
+ System.out.println(employeeDTO);
+
+ SqlFieldsQuery sql = new SqlFieldsQuery(
+ "select * from EmployeeDTO where isEmployed = 'true'");
+
+ QueryCursor> cursor = cache.query(sql);
+ }
+}
diff --git a/libraries-data/src/main/java/com/baeldung/ignite/spring/config/SpringDataConfig.java b/libraries-data/src/main/java/com/baeldung/ignite/spring/config/SpringDataConfig.java
new file mode 100644
index 0000000000..20a00a0285
--- /dev/null
+++ b/libraries-data/src/main/java/com/baeldung/ignite/spring/config/SpringDataConfig.java
@@ -0,0 +1,34 @@
+package com.baeldung.ignite.spring.config;
+
+import com.baeldung.ignite.spring.dto.EmployeeDTO;
+import com.baeldung.ignite.spring.repository.EmployeeRepository;
+import org.apache.ignite.Ignite;
+import org.apache.ignite.Ignition;
+import org.apache.ignite.configuration.CacheConfiguration;
+import org.apache.ignite.configuration.IgniteConfiguration;
+import org.apache.ignite.springdata.repository.config.EnableIgniteRepositories;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+@EnableIgniteRepositories(basePackageClasses = EmployeeRepository.class)
+@ComponentScan(basePackages = "com.baeldung.ignite.spring.repository")
+public class SpringDataConfig {
+
+ @Bean
+ public Ignite igniteInstance() {
+ IgniteConfiguration config = new IgniteConfiguration();
+ // Setting some custom name for the node.
+ //config.setIgniteInstanceName("springDataNode");
+ // Enabling peer-class loading feature.
+ //config.setPeerClassLoadingEnabled(true);
+ // Defining and creating a new cache to be used by Ignite Spring Data
+ // repository.
+ CacheConfiguration cache = new CacheConfiguration("baeldungCache");
+ // Setting SQL schema for the cache.
+ cache.setIndexedTypes(Integer.class, EmployeeDTO.class);
+ config.setCacheConfiguration(cache);
+ return Ignition.start(config);
+ }
+}
diff --git a/libraries-data/src/main/java/com/baeldung/ignite/spring/dto/EmployeeDTO.java b/libraries-data/src/main/java/com/baeldung/ignite/spring/dto/EmployeeDTO.java
new file mode 100644
index 0000000000..5dbf860fe7
--- /dev/null
+++ b/libraries-data/src/main/java/com/baeldung/ignite/spring/dto/EmployeeDTO.java
@@ -0,0 +1,48 @@
+package com.baeldung.ignite.spring.dto;
+
+import org.apache.ignite.cache.query.annotations.QuerySqlField;
+
+import java.io.Serializable;
+
+public class EmployeeDTO implements Serializable {
+
+ @QuerySqlField(index = true)
+ private Integer id;
+ @QuerySqlField(index = true)
+ private String name;
+ @QuerySqlField(index = true)
+ private boolean isEmployed;
+
+ public Integer getId() {
+ return id;
+ }
+
+ public void setId(Integer id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public boolean isEmployed() {
+ return isEmployed;
+ }
+
+ public void setEmployed(boolean employed) {
+ isEmployed = employed;
+ }
+
+ @Override
+ public String toString() {
+ return "EmployeeDTO{" +
+ "id=" + id +
+ ", name='" + name + '\'' +
+ ", isEmployed=" + isEmployed +
+ '}';
+ }
+}
diff --git a/libraries-data/src/main/java/com/baeldung/ignite/spring/repository/EmployeeRepository.java b/libraries-data/src/main/java/com/baeldung/ignite/spring/repository/EmployeeRepository.java
new file mode 100644
index 0000000000..cdcd23a58a
--- /dev/null
+++ b/libraries-data/src/main/java/com/baeldung/ignite/spring/repository/EmployeeRepository.java
@@ -0,0 +1,13 @@
+package com.baeldung.ignite.spring.repository;
+
+import com.baeldung.ignite.spring.dto.EmployeeDTO;
+import org.apache.ignite.springdata.repository.IgniteRepository;
+import org.apache.ignite.springdata.repository.config.RepositoryConfig;
+import org.springframework.stereotype.Repository;
+
+@Repository
+@RepositoryConfig(cacheName = "baeldungCache")
+public interface EmployeeRepository extends IgniteRepository {
+
+ EmployeeDTO getEmployeeDTOById(Integer id);
+}