Apply project coding conventions to Repository example

This commit is contained in:
Ilkka Seppala 2015-12-05 21:26:30 +02:00
parent 02d6754804
commit 507b89d5e4
7 changed files with 138 additions and 132 deletions

View File

@ -24,12 +24,13 @@ public class App {
/** /**
* Program entry point * Program entry point
* *
* @param args command line args * @param args
* command line args
*/ */
public static void main(String[] args) { public static void main(String[] args) {
ClassPathXmlApplicationContext context = ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
new ClassPathXmlApplicationContext("applicationContext.xml"); "applicationContext.xml");
PersonRepository repository = context.getBean(PersonRepository.class); PersonRepository repository = context.getBean(PersonRepository.class);
Person peter = new Person("Peter", "Sagan", 17); Person peter = new Person("Peter", "Sagan", 17);

View File

@ -15,117 +15,122 @@ import org.springframework.orm.jpa.JpaTransactionManager;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
/** /**
* Annotations based configuration for Spring * This is the same example as in {@link App} but with annotations based
* configuration for Spring.
* *
*/ */
@EnableJpaRepositories @EnableJpaRepositories
public class AppConfig { public class AppConfig {
/** /**
* Creation of H2 db * Creation of H2 db
* *
* @return A new Instance of DataSource * @return A new Instance of DataSource
*/ */
@Bean(destroyMethod = "close") @Bean(destroyMethod = "close")
public DataSource dataSource() { public DataSource dataSource() {
BasicDataSource basicDataSource = new BasicDataSource(); BasicDataSource basicDataSource = new BasicDataSource();
basicDataSource.setDriverClassName("org.h2.Driver"); basicDataSource.setDriverClassName("org.h2.Driver");
basicDataSource.setUrl("jdbc:h2:~/databases/person"); basicDataSource.setUrl("jdbc:h2:~/databases/person");
basicDataSource.setUsername("sa"); basicDataSource.setUsername("sa");
basicDataSource.setPassword("sa"); basicDataSource.setPassword("sa");
return (DataSource) basicDataSource; return (DataSource) basicDataSource;
} }
/** /**
* Factory to create a especific instance of Entity Manager * Factory to create a especific instance of Entity Manager
* @return *
*/ * @return
@Bean */
public LocalContainerEntityManagerFactoryBean entityManagerFactory() { @Bean
LocalContainerEntityManagerFactoryBean entityManager = new LocalContainerEntityManagerFactoryBean(); public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
entityManager.setDataSource(dataSource()); LocalContainerEntityManagerFactoryBean entityManager = new LocalContainerEntityManagerFactoryBean();
entityManager.setPackagesToScan("com.iluwatar"); entityManager.setDataSource(dataSource());
entityManager.setPersistenceProvider(new HibernatePersistenceProvider()); entityManager.setPackagesToScan("com.iluwatar");
entityManager.setJpaProperties(jpaProperties()); entityManager.setPersistenceProvider(new HibernatePersistenceProvider());
entityManager.setJpaProperties(jpaProperties());
return entityManager; return entityManager;
} }
/** /**
* Properties for Jpa * Properties for Jpa
* @return *
*/ * @return
private Properties jpaProperties() { */
Properties properties = new Properties(); private Properties jpaProperties() {
properties.setProperty("hibernate.dialect", "org.hibernate.dialect.H2Dialect"); Properties properties = new Properties();
properties.setProperty("hibernate.hbm2ddl.auto", "create-drop"); properties.setProperty("hibernate.dialect", "org.hibernate.dialect.H2Dialect");
return properties; properties.setProperty("hibernate.hbm2ddl.auto", "create-drop");
} return properties;
}
@Bean
public JpaTransactionManager transactionManager() throws SQLException { @Bean
JpaTransactionManager transactionManager = new JpaTransactionManager(); public JpaTransactionManager transactionManager() throws SQLException {
transactionManager.setEntityManagerFactory(entityManagerFactory().getObject()); JpaTransactionManager transactionManager = new JpaTransactionManager();
return transactionManager; transactionManager.setEntityManagerFactory(entityManagerFactory().getObject());
return transactionManager;
}
/**
* Program entry point
*
* @param args
* command line args
*/
public static void main(String[] args) {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(
AppConfig.class);
PersonRepository repository = context.getBean(PersonRepository.class);
Person peter = new Person("Peter", "Sagan", 17);
Person nasta = new Person("Nasta", "Kuzminova", 25);
Person john = new Person("John", "lawrence", 35);
Person terry = new Person("Terry", "Law", 36);
// Add new Person records
repository.save(peter);
repository.save(nasta);
repository.save(john);
repository.save(terry);
// Count Person records
System.out.println("Count Person records: " + repository.count());
// Print all records
List<Person> persons = (List<Person>) repository.findAll();
for (Person person : persons) {
System.out.println(person);
} }
/**
* Program entry point
*
* @param args command line args
*/
public static void main(String[] args) {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class); // Update Person
PersonRepository repository = context.getBean(PersonRepository.class); nasta.setName("Barbora");
nasta.setSurname("Spotakova");
repository.save(nasta);
Person peter = new Person("Peter", "Sagan", 17); System.out.println("Find by id 2: " + repository.findOne(2L));
Person nasta = new Person("Nasta", "Kuzminova", 25);
Person john = new Person("John", "lawrence", 35);
Person terry = new Person("Terry", "Law", 36);
// Add new Person records // Remove record from Person
repository.save(peter); repository.delete(2L);
repository.save(nasta);
repository.save(john);
repository.save(terry);
// Count Person records // count records
System.out.println("Count Person records: " + repository.count()); System.out.println("Count Person records: " + repository.count());
// Print all records // find by name
List<Person> persons = (List<Person>) repository.findAll(); Person p = repository.findOne(new PersonSpecifications.NameEqualSpec("John"));
for (Person person : persons) { System.out.println("Find by John is " + p);
System.out.println(person);
}
// Update Person // find by age
nasta.setName("Barbora"); persons = repository.findAll(new PersonSpecifications.AgeBetweenSpec(20, 40));
nasta.setSurname("Spotakova");
repository.save(nasta);
System.out.println("Find by id 2: " + repository.findOne(2L)); System.out.println("Find Person with age between 20,40: ");
for (Person person : persons) {
System.out.println(person);
}
// Remove record from Person context.close();
repository.delete(2L);
// count records }
System.out.println("Count Person records: " + repository.count());
// find by name
Person p = repository.findOne(new PersonSpecifications.NameEqualSpec("John"));
System.out.println("Find by John is " + p);
// find by age
persons = repository.findAll(new PersonSpecifications.AgeBetweenSpec(20, 40));
System.out.println("Find Person with age between 20,40: ");
for (Person person : persons) {
System.out.println(person);
}
context.close();
}
} }

View File

@ -20,7 +20,8 @@ public class Person {
private int age; private int age;
public Person() {} public Person() {
}
public Person(String name, String surname, int age) { public Person(String name, String surname, int age) {
this.name = name; this.name = name;
@ -52,7 +53,6 @@ public class Person {
this.surname = surname; this.surname = surname;
} }
public int getAge() { public int getAge() {
return age; return age;
} }

View File

@ -31,6 +31,7 @@ public class PersonSpecifications {
} }
} }
public static class NameEqualSpec implements Specification<Person> { public static class NameEqualSpec implements Specification<Person> {
public String name; public String name;
@ -47,4 +48,3 @@ public class PersonSpecifications {
} }
} }

View File

@ -22,9 +22,10 @@ import com.google.common.collect.Lists;
/** /**
* Test case to test the functions of {@link PersonRepository}, beside the CRUD functions, the query * Test case to test the functions of {@link PersonRepository}, beside the CRUD functions, the query
* by {@link org.springframework.data.jpa.domain.Specification} are also test. * by {@link org.springframework.data.jpa.domain.Specification} are also test.
*
*/ */
@RunWith(SpringJUnit4ClassRunner.class) @RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { AppConfig.class}, loader = AnnotationConfigContextLoader.class) @ContextConfiguration(classes = { AppConfig.class }, loader = AnnotationConfigContextLoader.class)
public class AnnotationBasedRepositoryTest { public class AnnotationBasedRepositoryTest {
@Resource @Resource
@ -107,4 +108,3 @@ public class AnnotationBasedRepositoryTest {
} }
} }

View File

@ -20,35 +20,36 @@ import org.springframework.transaction.annotation.Transactional;
* *
*/ */
@RunWith(SpringJUnit4ClassRunner.class) @RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { AppConfig.class}, loader = AnnotationConfigContextLoader.class) @ContextConfiguration(classes = { AppConfig.class }, loader = AnnotationConfigContextLoader.class)
public class AppConfigTest { public class AppConfigTest {
@Autowired @Autowired
DataSource dataSource; DataSource dataSource;
/** /**
* Test for bean instance * Test for bean instance
*/ */
@Test @Test
public void testDataSource() { public void testDataSource() {
assertNotNull(dataSource); assertNotNull(dataSource);
} }
/** /**
* Test for correct query execution * Test for correct query execution
* @throws SQLException *
*/ * @throws SQLException
@Test */
@Transactional @Test
public void testQuery() throws SQLException{ @Transactional
ResultSet resultSet = dataSource.getConnection().createStatement().executeQuery("SELECT 1"); public void testQuery() throws SQLException {
String result = null; ResultSet resultSet = dataSource.getConnection().createStatement().executeQuery("SELECT 1");
String expected = "1"; String result = null;
while (resultSet.next()) { String expected = "1";
result = resultSet.getString(1); while (resultSet.next()) {
result = resultSet.getString(1);
}
assertTrue(result.equals(expected)); }
} assertTrue(result.equals(expected));
}
} }

View File

@ -23,7 +23,7 @@ import com.google.common.collect.Lists;
* by {@link org.springframework.data.jpa.domain.Specification} are also test. * by {@link org.springframework.data.jpa.domain.Specification} are also test.
*/ */
@RunWith(SpringJUnit4ClassRunner.class) @RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:applicationContext.xml"}) @ContextConfiguration(locations = { "classpath:applicationContext.xml" })
public class RepositoryTest { public class RepositoryTest {
@Resource @Resource
@ -106,4 +106,3 @@ public class RepositoryTest {
} }
} }