diff --git a/repository/pom.xml b/repository/pom.xml index a950d3abb..ddd69942f 100644 --- a/repository/pom.xml +++ b/repository/pom.xml @@ -15,5 +15,20 @@ junit test + + org.springframework.data + spring-data-jpa + 1.7.1.RELEASE + + + org.hibernate + hibernate-entitymanager + 5.0.0.CR2 + + + org.postgresql + postgresql + 9.4-1200-jdbc4 + diff --git a/repository/src/main/java/com/iluwatar/App.java b/repository/src/main/java/com/iluwatar/App.java index 9d4f497d2..0408cd7c2 100644 --- a/repository/src/main/java/com/iluwatar/App.java +++ b/repository/src/main/java/com/iluwatar/App.java @@ -1,8 +1,52 @@ package com.iluwatar; +import java.util.List; + +import org.springframework.context.support.ClassPathXmlApplicationContext; + +/** + * Standalone application with Spring Data JPA, Hibernate and Maven + * + * @author DevCrumb.com + */ public class App { - - public static void main( String[] args ) { - System.out.println( "Hello World!" ); - } + public static void main(String[] args) { + 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/repository/src/main/java/com/iluwatar/Person.java b/repository/src/main/java/com/iluwatar/Person.java new file mode 100644 index 000000000..bd2ebf43a --- /dev/null +++ b/repository/src/main/java/com/iluwatar/Person.java @@ -0,0 +1,59 @@ +package com.iluwatar; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; + +/** + * Person entity + * + * @author DevCrumb.com + */ +@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/repository/src/main/java/com/iluwatar/PersonDao.java b/repository/src/main/java/com/iluwatar/PersonDao.java new file mode 100644 index 000000000..66b625782 --- /dev/null +++ b/repository/src/main/java/com/iluwatar/PersonDao.java @@ -0,0 +1,17 @@ +package com.iluwatar; + +import java.util.List; + +import org.springframework.data.repository.CrudRepository; +import org.springframework.stereotype.Repository; + +/** + * Person dao interface + * + * @author DevCrumb.com + */ +@Repository +public interface PersonDao extends CrudRepository { + + public List findBySurname(String surname); +} diff --git a/repository/src/main/resources/META-INF/persistence.xml b/repository/src/main/resources/META-INF/persistence.xml new file mode 100644 index 000000000..4c1478e55 --- /dev/null +++ b/repository/src/main/resources/META-INF/persistence.xml @@ -0,0 +1,8 @@ + + + + + + \ No newline at end of file diff --git a/repository/src/main/resources/applicationContext.xml b/repository/src/main/resources/applicationContext.xml new file mode 100644 index 000000000..c7c4179d2 --- /dev/null +++ b/repository/src/main/resources/applicationContext.xml @@ -0,0 +1,51 @@ + + + + + + + + + org.postgresql.Driver + + + jdbc:postgresql://localhost:5432/postgres + + + postgres + + + ile666 + + + + + + + + + + + + org.hibernate.dialect.PostgreSQLDialect + false + false + create + + + + + + + + + \ No newline at end of file