Files
java-design-patterns/repository/src/main/java/com/iluwatar/App.java
2015-07-22 00:58:22 +03:00

64 lines
2.1 KiB
Java

package com.iluwatar;
import java.util.List;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
*
* Repository pattern mediates between the domain and data mapping layers using a collection-like
* interface for accessing domain objects. A system with complex domain model often benefits from
* a layer that isolates domain objects from the details of the database access code and in such
* systems it can be worthwhile to build another layer of abstraction over the mapping layer where
* query construction code is concentrated. This becomes more important when there are a large
* number of domain classes or heavy querying. In these cases particularly, adding this layer helps
* minimize duplicate query logic.
*
* In this example we utilize Spring Data to automatically generate a repository for us from the Person
* domain object. Using the PersonDao we perform CRUD operations on the entity. Underneath we have
* configured in-memory H2 database for which schema is created and dropped on each run.
*
*/
public class App {
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<Person> persons = (List<Person>) 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();
}
}