diff --git a/layers/pom.xml b/layers/pom.xml
index 4f70ab1c9..2027f6ae3 100644
--- a/layers/pom.xml
+++ b/layers/pom.xml
@@ -11,6 +11,22 @@
com.iluwatar.layers
layers
+
+ org.springframework.data
+ spring-data-jpa
+
+
+ org.hibernate
+ hibernate-entitymanager
+
+
+ commons-dbcp
+ commons-dbcp
+
+
+ com.h2database
+ h2
+
junit
junit
diff --git a/layers/src/main/java/com/iluwatar/layers/App.java b/layers/src/main/java/com/iluwatar/layers/App.java
index c6c03d1dd..b02dd561a 100644
--- a/layers/src/main/java/com/iluwatar/layers/App.java
+++ b/layers/src/main/java/com/iluwatar/layers/App.java
@@ -1,8 +1,48 @@
package com.iluwatar.layers;
+import java.util.List;
+
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
public class App {
public static void main(String[] args) {
- System.out.println("Hello World!");
+ ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
+ "applicationContext.xml");
+ PersonDao dao = context.getBean(PersonDao.class);
+
+ Person peter = new Person("Peter", "Sagan");
+ Person nasta = new Person("Nasta", "Kuzminova");
+
+ // Add new Person records
+ dao.save(peter);
+ dao.save(nasta);
+
+ // Count Person records
+ System.out.println("Count Person records: " + dao.count());
+
+ // Print all records
+ List persons = (List) dao.findAll();
+ for (Person person : persons) {
+ System.out.println(person);
+ }
+
+ // Find Person by surname
+ System.out.println("Find by surname 'Sagan': " + dao.findBySurname("Sagan"));
+
+ // Update Person
+ nasta.setName("Barbora");
+ nasta.setSurname("Spotakova");
+ dao.save(nasta);
+
+ System.out.println("Find by id 2: " + dao.findOne(2L));
+
+ // Remove record from Person
+ dao.delete(2L);
+
+ // And finally count records
+ System.out.println("Count Person records: " + dao.count());
+
+ context.close();
}
}
diff --git a/layers/src/main/java/com/iluwatar/layers/Person.java b/layers/src/main/java/com/iluwatar/layers/Person.java
new file mode 100644
index 000000000..050fc1a28
--- /dev/null
+++ b/layers/src/main/java/com/iluwatar/layers/Person.java
@@ -0,0 +1,58 @@
+package com.iluwatar.layers;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+
+/**
+ *
+ * Person entity
+ *
+ */
+@Entity
+public class Person {
+
+ @Id
+ @GeneratedValue
+ private Long id;
+ private String name;
+ private String surname;
+
+ public Person() {
+ }
+
+ public Person(String name, String surname) {
+ this.name = name;
+ this.surname = surname;
+ }
+
+ 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;
+ }
+
+ public String getSurname() {
+ return surname;
+ }
+
+ public void setSurname(String surname) {
+ this.surname = surname;
+ }
+
+ @Override
+ public String toString() {
+ return "Person [id=" + id + ", name=" + name + ", surname=" + surname
+ + "]";
+ }
+}
diff --git a/layers/src/main/java/com/iluwatar/layers/PersonDao.java b/layers/src/main/java/com/iluwatar/layers/PersonDao.java
new file mode 100644
index 000000000..34977a9d2
--- /dev/null
+++ b/layers/src/main/java/com/iluwatar/layers/PersonDao.java
@@ -0,0 +1,17 @@
+package com.iluwatar.layers;
+
+import java.util.List;
+
+import org.springframework.data.repository.CrudRepository;
+import org.springframework.stereotype.Repository;
+
+/**
+ *
+ * Person repository
+ *
+ */
+@Repository
+public interface PersonDao extends CrudRepository {
+
+ public List findBySurname(String surname);
+}
diff --git a/layers/src/main/resources/META-INF/persistence.xml b/layers/src/main/resources/META-INF/persistence.xml
new file mode 100644
index 000000000..0aded0dbd
--- /dev/null
+++ b/layers/src/main/resources/META-INF/persistence.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
diff --git a/layers/src/main/resources/applicationContext.xml b/layers/src/main/resources/applicationContext.xml
new file mode 100644
index 000000000..3fe15b2f6
--- /dev/null
+++ b/layers/src/main/resources/applicationContext.xml
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+