Skip to content

Commit d1bc28b

Browse files
committed
iluwatar#84 Utilize Repository layer from another example
1 parent 1bcd822 commit d1bc28b

File tree

6 files changed

+179
-1
lines changed

6 files changed

+179
-1
lines changed

layers/pom.xml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,22 @@
1111
<groupId>com.iluwatar.layers</groupId>
1212
<artifactId>layers</artifactId>
1313
<dependencies>
14+
<dependency>
15+
<groupId>org.springframework.data</groupId>
16+
<artifactId>spring-data-jpa</artifactId>
17+
</dependency>
18+
<dependency>
19+
<groupId>org.hibernate</groupId>
20+
<artifactId>hibernate-entitymanager</artifactId>
21+
</dependency>
22+
<dependency>
23+
<groupId>commons-dbcp</groupId>
24+
<artifactId>commons-dbcp</artifactId>
25+
</dependency>
26+
<dependency>
27+
<groupId>com.h2database</groupId>
28+
<artifactId>h2</artifactId>
29+
</dependency>
1430
<dependency>
1531
<groupId>junit</groupId>
1632
<artifactId>junit</artifactId>
Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,48 @@
11
package com.iluwatar.layers;
22

3+
import java.util.List;
4+
5+
import org.springframework.context.support.ClassPathXmlApplicationContext;
6+
37
public class App {
48

59
public static void main(String[] args) {
6-
System.out.println("Hello World!");
10+
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
11+
"applicationContext.xml");
12+
PersonDao dao = context.getBean(PersonDao.class);
13+
14+
Person peter = new Person("Peter", "Sagan");
15+
Person nasta = new Person("Nasta", "Kuzminova");
16+
17+
// Add new Person records
18+
dao.save(peter);
19+
dao.save(nasta);
20+
21+
// Count Person records
22+
System.out.println("Count Person records: " + dao.count());
23+
24+
// Print all records
25+
List<Person> persons = (List<Person>) dao.findAll();
26+
for (Person person : persons) {
27+
System.out.println(person);
28+
}
29+
30+
// Find Person by surname
31+
System.out.println("Find by surname 'Sagan': " + dao.findBySurname("Sagan"));
32+
33+
// Update Person
34+
nasta.setName("Barbora");
35+
nasta.setSurname("Spotakova");
36+
dao.save(nasta);
37+
38+
System.out.println("Find by id 2: " + dao.findOne(2L));
39+
40+
// Remove record from Person
41+
dao.delete(2L);
42+
43+
// And finally count records
44+
System.out.println("Count Person records: " + dao.count());
45+
46+
context.close();
747
}
848
}
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
package com.iluwatar.layers;
2+
3+
import javax.persistence.Entity;
4+
import javax.persistence.GeneratedValue;
5+
import javax.persistence.Id;
6+
7+
/**
8+
*
9+
* Person entity
10+
*
11+
*/
12+
@Entity
13+
public class Person {
14+
15+
@Id
16+
@GeneratedValue
17+
private Long id;
18+
private String name;
19+
private String surname;
20+
21+
public Person() {
22+
}
23+
24+
public Person(String name, String surname) {
25+
this.name = name;
26+
this.surname = surname;
27+
}
28+
29+
public Long getId() {
30+
return id;
31+
}
32+
33+
public void setId(Long id) {
34+
this.id = id;
35+
}
36+
37+
public String getName() {
38+
return name;
39+
}
40+
41+
public void setName(String name) {
42+
this.name = name;
43+
}
44+
45+
public String getSurname() {
46+
return surname;
47+
}
48+
49+
public void setSurname(String surname) {
50+
this.surname = surname;
51+
}
52+
53+
@Override
54+
public String toString() {
55+
return "Person [id=" + id + ", name=" + name + ", surname=" + surname
56+
+ "]";
57+
}
58+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.iluwatar.layers;
2+
3+
import java.util.List;
4+
5+
import org.springframework.data.repository.CrudRepository;
6+
import org.springframework.stereotype.Repository;
7+
8+
/**
9+
*
10+
* Person repository
11+
*
12+
*/
13+
@Repository
14+
public interface PersonDao extends CrudRepository<Person, Long> {
15+
16+
public List<Person> findBySurname(String surname);
17+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<persistence version="1.0"
3+
xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
5+
6+
<persistence-unit name="jpaData" />
7+
8+
</persistence>
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<beans xmlns="http://www.springframework.org/schema/beans"
3+
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"
4+
xmlns:security="http://www.springframework.org/schema/security"
5+
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
6+
xmlns:jpa="http://www.springframework.org/schema/data/jpa"
7+
xsi:schemaLocation="
8+
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
9+
http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.0.xsd">
10+
11+
<jpa:repositories base-package="com.iluwatar" />
12+
13+
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
14+
<property name="entityManagerFactory" ref="entityManagerFactory" />
15+
</bean>
16+
17+
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
18+
destroy-method="close">
19+
<property name="driverClassName" value="org.h2.Driver" />
20+
<property name="url" value="jdbc:h2:~/databases/person" />
21+
<property name="username" value="sa" />
22+
<property name="password" value="sa" />
23+
</bean>
24+
25+
<bean id="entityManagerFactory"
26+
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
27+
<property name="dataSource" ref="dataSource" />
28+
<property name="packagesToScan" value="com.iluwatar" />
29+
<property name="persistenceProvider">
30+
<bean class="org.hibernate.ejb.HibernatePersistence" />
31+
</property>
32+
<property name="jpaProperties">
33+
<map>
34+
<entry key="hibernate.dialect" value="org.hibernate.dialect.H2Dialect" />
35+
<entry key="hibernate.hbm2ddl.auto" value="create-drop" />
36+
</map>
37+
</property>
38+
</bean>
39+
</beans>

0 commit comments

Comments
 (0)