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
*
* @param args command line args
* @param args
* command line args
*/
public static void main(String[] args) {
ClassPathXmlApplicationContext context =
new ClassPathXmlApplicationContext("applicationContext.xml");
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
"applicationContext.xml");
PersonRepository repository = context.getBean(PersonRepository.class);
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;
/**
* Annotations based configuration for Spring
* This is the same example as in {@link App} but with annotations based
* configuration for Spring.
*
*/
@EnableJpaRepositories
public class AppConfig {
/**
* Creation of H2 db
*
* @return A new Instance of DataSource
*/
@Bean(destroyMethod = "close")
public DataSource dataSource() {
BasicDataSource basicDataSource = new BasicDataSource();
basicDataSource.setDriverClassName("org.h2.Driver");
basicDataSource.setUrl("jdbc:h2:~/databases/person");
basicDataSource.setUsername("sa");
basicDataSource.setPassword("sa");
return (DataSource) basicDataSource;
}
/**
* Creation of H2 db
*
* @return A new Instance of DataSource
*/
@Bean(destroyMethod = "close")
public DataSource dataSource() {
BasicDataSource basicDataSource = new BasicDataSource();
basicDataSource.setDriverClassName("org.h2.Driver");
basicDataSource.setUrl("jdbc:h2:~/databases/person");
basicDataSource.setUsername("sa");
basicDataSource.setPassword("sa");
return (DataSource) basicDataSource;
}
/**
* Factory to create a especific instance of Entity Manager
* @return
*/
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
LocalContainerEntityManagerFactoryBean entityManager = new LocalContainerEntityManagerFactoryBean();
entityManager.setDataSource(dataSource());
entityManager.setPackagesToScan("com.iluwatar");
entityManager.setPersistenceProvider(new HibernatePersistenceProvider());
entityManager.setJpaProperties(jpaProperties());
/**
* Factory to create a especific instance of Entity Manager
*
* @return
*/
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
LocalContainerEntityManagerFactoryBean entityManager = new LocalContainerEntityManagerFactoryBean();
entityManager.setDataSource(dataSource());
entityManager.setPackagesToScan("com.iluwatar");
entityManager.setPersistenceProvider(new HibernatePersistenceProvider());
entityManager.setJpaProperties(jpaProperties());
return entityManager;
}
return entityManager;
}
/**
* Properties for Jpa
* @return
*/
private Properties jpaProperties() {
Properties properties = new Properties();
properties.setProperty("hibernate.dialect", "org.hibernate.dialect.H2Dialect");
properties.setProperty("hibernate.hbm2ddl.auto", "create-drop");
return properties;
}
@Bean
public JpaTransactionManager transactionManager() throws SQLException {
JpaTransactionManager transactionManager = new JpaTransactionManager();
transactionManager.setEntityManagerFactory(entityManagerFactory().getObject());
return transactionManager;
/**
* Properties for Jpa
*
* @return
*/
private Properties jpaProperties() {
Properties properties = new Properties();
properties.setProperty("hibernate.dialect", "org.hibernate.dialect.H2Dialect");
properties.setProperty("hibernate.hbm2ddl.auto", "create-drop");
return properties;
}
@Bean
public JpaTransactionManager transactionManager() throws SQLException {
JpaTransactionManager transactionManager = new JpaTransactionManager();
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);
PersonRepository repository = context.getBean(PersonRepository.class);
// Update Person
nasta.setName("Barbora");
nasta.setSurname("Spotakova");
repository.save(nasta);
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);
System.out.println("Find by id 2: " + repository.findOne(2L));
// Add new Person records
repository.save(peter);
repository.save(nasta);
repository.save(john);
repository.save(terry);
// Remove record from Person
repository.delete(2L);
// Count Person records
System.out.println("Count Person records: " + repository.count());
// count 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);
}
// find by name
Person p = repository.findOne(new PersonSpecifications.NameEqualSpec("John"));
System.out.println("Find by John is " + p);
// Update Person
nasta.setName("Barbora");
nasta.setSurname("Spotakova");
repository.save(nasta);
// find by age
persons = repository.findAll(new PersonSpecifications.AgeBetweenSpec(20, 40));
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
repository.delete(2L);
context.close();
// 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;
public Person() {}
public Person() {
}
public Person(String name, String surname, int age) {
this.name = name;
@ -52,7 +53,6 @@ public class Person {
this.surname = surname;
}
public int getAge() {
return age;
}

View File

@ -31,6 +31,7 @@ public class PersonSpecifications {
}
}
public static class NameEqualSpec implements Specification<Person> {
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
* by {@link org.springframework.data.jpa.domain.Specification} are also test.
*
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { AppConfig.class}, loader = AnnotationConfigContextLoader.class)
@ContextConfiguration(classes = { AppConfig.class }, loader = AnnotationConfigContextLoader.class)
public class AnnotationBasedRepositoryTest {
@Resource
@ -107,4 +108,3 @@ public class AnnotationBasedRepositoryTest {
}
}

View File

@ -20,35 +20,36 @@ import org.springframework.transaction.annotation.Transactional;
*
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { AppConfig.class}, loader = AnnotationConfigContextLoader.class)
@ContextConfiguration(classes = { AppConfig.class }, loader = AnnotationConfigContextLoader.class)
public class AppConfigTest {
@Autowired
DataSource dataSource;
/**
* Test for bean instance
*/
@Test
public void testDataSource() {
assertNotNull(dataSource);
}
/**
* Test for correct query execution
* @throws SQLException
*/
@Test
@Transactional
public void testQuery() throws SQLException{
ResultSet resultSet = dataSource.getConnection().createStatement().executeQuery("SELECT 1");
String result = null;
String expected = "1";
while (resultSet.next()) {
result = resultSet.getString(1);
}
assertTrue(result.equals(expected));
}
@Autowired
DataSource dataSource;
/**
* Test for bean instance
*/
@Test
public void testDataSource() {
assertNotNull(dataSource);
}
/**
* Test for correct query execution
*
* @throws SQLException
*/
@Test
@Transactional
public void testQuery() throws SQLException {
ResultSet resultSet = dataSource.getConnection().createStatement().executeQuery("SELECT 1");
String result = null;
String expected = "1";
while (resultSet.next()) {
result = resultSet.getString(1);
}
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.
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:applicationContext.xml"})
@ContextConfiguration(locations = { "classpath:applicationContext.xml" })
public class RepositoryTest {
@Resource
@ -106,4 +106,3 @@ public class RepositoryTest {
}
}