64 lines
2.1 KiB
Java
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();
|
|
}
|
|
}
|