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 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +