From 5432a1932cbf624c145304e045e8da6da902da8c Mon Sep 17 00:00:00 2001 From: Mic Date: Tue, 15 Jan 2013 17:31:01 +0800 Subject: [PATCH] started adding support for Spring Data --- pom.xml | 9 ++++ .../{JdbcClinic.java => JdbcClinicImpl.java} | 4 +- ...nicMBean.java => JdbcClinicImplMBean.java} | 6 +-- .../samples/petclinic/jdbc/JdbcPet.java | 2 +- .../{JpaClinic.java => JpaClinicImpl.java} | 2 +- .../petclinic/jpa/SpringDataClinic.java | 45 +++++++++++++++++++ .../spring/applicationContext-dao.xml | 38 ++++++++++------ src/main/webapp/resources/html/tutorial.html | 4 +- .../aspects/UsageLogAspectTests.java | 4 +- ...nicTests.java => JdbcClinicImplTests.java} | 4 +- ...inicTests.java => JpaClinicImplTests.java} | 4 +- 11 files changed, 93 insertions(+), 29 deletions(-) rename src/main/java/org/springframework/samples/petclinic/jdbc/{JdbcClinic.java => JdbcClinicImpl.java} (98%) rename src/main/java/org/springframework/samples/petclinic/jdbc/{JdbcClinicMBean.java => JdbcClinicImplMBean.java} (77%) rename src/main/java/org/springframework/samples/petclinic/jpa/{JpaClinic.java => JpaClinicImpl.java} (97%) create mode 100644 src/main/java/org/springframework/samples/petclinic/jpa/SpringDataClinic.java rename src/test/java/org/springframework/samples/petclinic/jdbc/{JdbcClinicTests.java => JdbcClinicImplTests.java} (83%) rename src/test/java/org/springframework/samples/petclinic/jpa/{JpaClinicTests.java => JpaClinicImplTests.java} (94%) diff --git a/pom.xml b/pom.xml index 8530395c3..874af64d2 100644 --- a/pom.xml +++ b/pom.xml @@ -118,6 +118,15 @@ ${hibernate.version} + + + + org.springframework.data + spring-data-jpa + 1.1.0.RELEASE + diff --git a/src/main/java/org/springframework/samples/petclinic/jdbc/JdbcClinic.java b/src/main/java/org/springframework/samples/petclinic/jdbc/JdbcClinicImpl.java similarity index 98% rename from src/main/java/org/springframework/samples/petclinic/jdbc/JdbcClinic.java rename to src/main/java/org/springframework/samples/petclinic/jdbc/JdbcClinicImpl.java index 48863e918..ecd8cb13b 100644 --- a/src/main/java/org/springframework/samples/petclinic/jdbc/JdbcClinic.java +++ b/src/main/java/org/springframework/samples/petclinic/jdbc/JdbcClinicImpl.java @@ -43,7 +43,7 @@ import org.springframework.transaction.annotation.Transactional; * {@link ParameterizedBeanPropertyRowMapper} which provide automatic mapping * between JavaBean properties and JDBC parameters or query results. * - *

JdbcClinic is a rewrite of the AbstractJdbcClinic which was the base + *

JdbcClinicImpl is a rewrite of the AbstractJdbcClinic which was the base * class for JDBC implementations of the Clinic interface for Spring 2.0. * * @author Ken Krebs @@ -55,7 +55,7 @@ import org.springframework.transaction.annotation.Transactional; */ @Service @ManagedResource("petclinic:type=Clinic") -public class JdbcClinic implements Clinic, JdbcClinicMBean { +public class JdbcClinicImpl implements Clinic, JdbcClinicImplMBean { private final Logger logger = LoggerFactory.getLogger(getClass()); diff --git a/src/main/java/org/springframework/samples/petclinic/jdbc/JdbcClinicMBean.java b/src/main/java/org/springframework/samples/petclinic/jdbc/JdbcClinicImplMBean.java similarity index 77% rename from src/main/java/org/springframework/samples/petclinic/jdbc/JdbcClinicMBean.java rename to src/main/java/org/springframework/samples/petclinic/jdbc/JdbcClinicImplMBean.java index 69627e16d..6eaa97cf5 100644 --- a/src/main/java/org/springframework/samples/petclinic/jdbc/JdbcClinicMBean.java +++ b/src/main/java/org/springframework/samples/petclinic/jdbc/JdbcClinicImplMBean.java @@ -6,14 +6,14 @@ package org.springframework.samples.petclinic.jdbc; * * @author Rob Harrop * @author Juergen Hoeller - * @see JdbcClinic + * @see JdbcClinicImpl */ -public interface JdbcClinicMBean { +public interface JdbcClinicImplMBean { /** * Refresh the cache of Vets that the Clinic is holding. * @see org.springframework.samples.petclinic.Clinic#getVets() - * @see JdbcClinic#refreshVetsCache() + * @see JdbcClinicImpl#refreshVetsCache() */ void refreshVetsCache(); diff --git a/src/main/java/org/springframework/samples/petclinic/jdbc/JdbcPet.java b/src/main/java/org/springframework/samples/petclinic/jdbc/JdbcPet.java index b2d253091..aa0bf183d 100644 --- a/src/main/java/org/springframework/samples/petclinic/jdbc/JdbcPet.java +++ b/src/main/java/org/springframework/samples/petclinic/jdbc/JdbcPet.java @@ -7,7 +7,7 @@ import org.springframework.samples.petclinic.Pet; * are only relevant for a JDBC implmentation of the Clinic. * * @author Juergen Hoeller - * @see JdbcClinic + * @see JdbcClinicImpl */ class JdbcPet extends Pet { diff --git a/src/main/java/org/springframework/samples/petclinic/jpa/JpaClinic.java b/src/main/java/org/springframework/samples/petclinic/jpa/JpaClinicImpl.java similarity index 97% rename from src/main/java/org/springframework/samples/petclinic/jpa/JpaClinic.java rename to src/main/java/org/springframework/samples/petclinic/jpa/JpaClinicImpl.java index 357189b5f..4d198970f 100644 --- a/src/main/java/org/springframework/samples/petclinic/jpa/JpaClinic.java +++ b/src/main/java/org/springframework/samples/petclinic/jpa/JpaClinicImpl.java @@ -29,7 +29,7 @@ import org.springframework.dao.DataAccessException; */ @Repository @Transactional -public class JpaClinic implements Clinic { +public class JpaClinicImpl implements Clinic { @PersistenceContext private EntityManager em; diff --git a/src/main/java/org/springframework/samples/petclinic/jpa/SpringDataClinic.java b/src/main/java/org/springframework/samples/petclinic/jpa/SpringDataClinic.java new file mode 100644 index 000000000..f21a576bb --- /dev/null +++ b/src/main/java/org/springframework/samples/petclinic/jpa/SpringDataClinic.java @@ -0,0 +1,45 @@ +package org.springframework.samples.petclinic.jpa; + +import java.util.Collection; + +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.Repository; +import org.springframework.samples.petclinic.Clinic; +import org.springframework.samples.petclinic.Owner; +import org.springframework.samples.petclinic.Pet; +import org.springframework.samples.petclinic.PetType; +import org.springframework.samples.petclinic.Vet; +import org.springframework.samples.petclinic.Visit; + +/** + * + * @author Michael Isvy + * @since 15.1.2013 + */ +public interface SpringDataClinic extends Clinic, Repository { + + + + @Query("SELECT vet FROM Vet vet ORDER BY vet.lastName, vet.firstName") + public Collection getVets(); + + @Query("SELECT ptype FROM PetType ptype ORDER BY ptype.name") + public Collection getPetTypes(); + + @Query("SELECT owner FROM Owner owner WHERE owner.lastName LIKE :lastName") + public Collection findOwners(String lastName); + + + public Owner findOwner(int id); + + public Pet findPet(int id); + + public void storeOwner(Owner owner); + + public void storePet(Pet pet); + + public void storeVisit(Visit visit); + + public void deletePet(int id); + +} diff --git a/src/main/resources/spring/applicationContext-dao.xml b/src/main/resources/spring/applicationContext-dao.xml index f3316a99b..9cd0805ec 100644 --- a/src/main/resources/spring/applicationContext-dao.xml +++ b/src/main/resources/spring/applicationContext-dao.xml @@ -3,13 +3,14 @@ Application context definition for PetClinic on JPA. --> + xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop" + xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" + xmlns:jpa="http://www.springframework.org/schema/data/jpa" + xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd + http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd + http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.1.xsd + http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd + http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> @@ -88,12 +89,6 @@ --> - - @@ -103,7 +98,22 @@ - + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/webapp/resources/html/tutorial.html b/src/main/webapp/resources/html/tutorial.html index f5c753495..f05326986 100644 --- a/src/main/webapp/resources/html/tutorial.html +++ b/src/main/webapp/resources/html/tutorial.html @@ -480,7 +480,7 @@

The JDBC implementation of the Clinic interface is - org.springframework.samples.petclinic.jdbc.JdbcClinic, + org.springframework.samples.petclinic.jdbc.JdbcClinicImpl, which uses Java 5 language features, org.springframework.jdbc.core.simple.SimpleJdbcTemplate, and org.springframework.jdbc.core.simple.SimpleJdbcInsert. @@ -513,7 +513,7 @@

The JPA implementation of the Clinic interface is - org.springframework.samples.petclinic.jpa.JpaClinic, + org.springframework.samples.petclinic.jpa.JpaClinicImpl, which is based on native JPA usage combined with Spring's @Repository and @Transactional annotations but diff --git a/src/test/java/org/springframework/samples/petclinic/aspects/UsageLogAspectTests.java b/src/test/java/org/springframework/samples/petclinic/aspects/UsageLogAspectTests.java index 901e766bf..2768909d2 100644 --- a/src/test/java/org/springframework/samples/petclinic/aspects/UsageLogAspectTests.java +++ b/src/test/java/org/springframework/samples/petclinic/aspects/UsageLogAspectTests.java @@ -7,7 +7,7 @@ import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.samples.petclinic.Clinic; import org.springframework.samples.petclinic.aspects.UsageLogAspect; -import org.springframework.samples.petclinic.jpa.JpaClinicTests; +import org.springframework.samples.petclinic.jpa.JpaClinicImplTests; import org.springframework.test.context.ActiveProfiles; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @@ -29,7 +29,7 @@ import static junit.framework.Assert.assertFalse; */ @ContextConfiguration(locations={"classpath:spring/applicationContext-dao.xml"}) @RunWith(SpringJUnit4ClassRunner.class) -@ActiveProfiles("jpa") +@ActiveProfiles({"jpa","plain-jpa"}) public class UsageLogAspectTests { @Autowired diff --git a/src/test/java/org/springframework/samples/petclinic/jdbc/JdbcClinicTests.java b/src/test/java/org/springframework/samples/petclinic/jdbc/JdbcClinicImplTests.java similarity index 83% rename from src/test/java/org/springframework/samples/petclinic/jdbc/JdbcClinicTests.java rename to src/test/java/org/springframework/samples/petclinic/jdbc/JdbcClinicImplTests.java index 1d26e243b..bba9193de 100644 --- a/src/test/java/org/springframework/samples/petclinic/jdbc/JdbcClinicTests.java +++ b/src/test/java/org/springframework/samples/petclinic/jdbc/JdbcClinicImplTests.java @@ -9,7 +9,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; /** *

- * Integration tests for the {@link JdbcClinic} implementation. + * Integration tests for the {@link JdbcClinicImpl} implementation. *

*

*

@@ -21,7 +21,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @RunWith(SpringJUnit4ClassRunner.class) @DirtiesContext @ActiveProfiles("jdbc") -public class JdbcClinicTests extends AbstractClinicTests { +public class JdbcClinicImplTests extends AbstractClinicTests { diff --git a/src/test/java/org/springframework/samples/petclinic/jpa/JpaClinicTests.java b/src/test/java/org/springframework/samples/petclinic/jpa/JpaClinicImplTests.java similarity index 94% rename from src/test/java/org/springframework/samples/petclinic/jpa/JpaClinicTests.java rename to src/test/java/org/springframework/samples/petclinic/jpa/JpaClinicImplTests.java index fc50f6eed..aed4fcb72 100644 --- a/src/test/java/org/springframework/samples/petclinic/jpa/JpaClinicTests.java +++ b/src/test/java/org/springframework/samples/petclinic/jpa/JpaClinicImplTests.java @@ -36,8 +36,8 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @ContextConfiguration(locations={"classpath:spring/applicationContext-dao.xml"}) @RunWith(SpringJUnit4ClassRunner.class) -@ActiveProfiles("jpa") -public class JpaClinicTests extends AbstractClinicTests { +@ActiveProfiles({"jpa","plain-jpa"}) +public class JpaClinicImplTests extends AbstractClinicTests { @PersistenceContext private EntityManager entityManager;