petclinic-uncached

migration to JPA annotations - added JPA annotations to POJO

1/14/2013 6:12:05 AM

Changes

.springBeans 2(+1 -1)

src/main/java/org/springframework/samples/petclinic/hibernate/HibernateClinic.java 98(+0 -98)

src/main/java/org/springframework/samples/petclinic/hibernate/package-info.java 9(+0 -9)

src/main/webapp/WEB-INF/spring/applicationContext-hibernate.xml 77(+0 -77)

src/test/java/org/springframework/samples/petclinic/hibernate/HibernateClinicTests.java 25(+0 -25)

src/test/java/org/springframework/samples/petclinic/jpa/HibernateEntityManagerClinicTests.java 24(+0 -24)

src/test/resources/org/springframework/samples/petclinic/hibernate/HibernateClinicTests-context.xml 25(+0 -25)

Details

.springBeans 2(+1 -1)

diff --git a/.springBeans b/.springBeans
index 34b281c..2edd02c 100644
--- a/.springBeans
+++ b/.springBeans
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <beansProjectDescription>
 	<version>1</version>
-	<pluginVersion><![CDATA[2.3.0.200912170948-RELEASE]]></pluginVersion>
+	<pluginVersion><![CDATA[3.2.0.201211290605-M1]]></pluginVersion>
 	<configSuffixes>
 		<configSuffix><![CDATA[xml]]></configSuffix>
 	</configSuffixes>
diff --git a/src/main/java/org/springframework/samples/petclinic/BaseEntity.java b/src/main/java/org/springframework/samples/petclinic/BaseEntity.java
index bb68af4..8913ab0 100644
--- a/src/main/java/org/springframework/samples/petclinic/BaseEntity.java
+++ b/src/main/java/org/springframework/samples/petclinic/BaseEntity.java
@@ -1,5 +1,8 @@
 package org.springframework.samples.petclinic;
 
+import javax.persistence.Id;
+import javax.persistence.MappedSuperclass;
+
 /**
  * Simple JavaBean domain object with an id property.
  * Used as a base class for objects needing this property.
@@ -7,9 +10,10 @@ package org.springframework.samples.petclinic;
  * @author Ken Krebs
  * @author Juergen Hoeller
  */
+@MappedSuperclass
 public class BaseEntity {
-
-	private Integer id;
+	@Id
+	protected Integer id;
 	
 
 	public void setId(Integer id) {
diff --git a/src/main/java/org/springframework/samples/petclinic/Clinic.java b/src/main/java/org/springframework/samples/petclinic/Clinic.java
index e48e850..9eca087 100644
--- a/src/main/java/org/springframework/samples/petclinic/Clinic.java
+++ b/src/main/java/org/springframework/samples/petclinic/Clinic.java
@@ -43,7 +43,7 @@ public interface Clinic {
 	 * @return the <code>Owner</code> if found
 	 * @throws org.springframework.dao.DataRetrievalFailureException if not found
 	 */
-	Owner loadOwner(int id) throws DataAccessException;
+	Owner findOwner(int id) throws DataAccessException;
 
 	/**
 	 * Retrieve a <code>Pet</code> from the data store by id.
@@ -51,7 +51,7 @@ public interface Clinic {
 	 * @return the <code>Pet</code> if found
 	 * @throws org.springframework.dao.DataRetrievalFailureException if not found
 	 */
-	Pet loadPet(int id) throws DataAccessException;
+	Pet findPet(int id) throws DataAccessException;
 
 	/**
 	 * Save an <code>Owner</code> to the data store, either inserting or updating it.
diff --git a/src/main/java/org/springframework/samples/petclinic/jdbc/SimpleJdbcClinic.java b/src/main/java/org/springframework/samples/petclinic/jdbc/SimpleJdbcClinic.java
index cc26338..7baef09 100644
--- a/src/main/java/org/springframework/samples/petclinic/jdbc/SimpleJdbcClinic.java
+++ b/src/main/java/org/springframework/samples/petclinic/jdbc/SimpleJdbcClinic.java
@@ -163,7 +163,7 @@ public class SimpleJdbcClinic implements Clinic, SimpleJdbcClinicMBean {
 	 * owner, if not already loaded.
 	 */
 	@Transactional(readOnly = true)
-	public Owner loadOwner(int id) throws DataAccessException {
+	public Owner findOwner(int id) throws DataAccessException {
 		Owner owner;
 		try {
 			owner = this.simpleJdbcTemplate.queryForObject(
@@ -179,7 +179,7 @@ public class SimpleJdbcClinic implements Clinic, SimpleJdbcClinicMBean {
 	}
 
 	@Transactional(readOnly = true)
-	public Pet loadPet(int id) throws DataAccessException {
+	public Pet findPet(int id) throws DataAccessException {
 		JdbcPet pet;
 		try {
 			pet = this.simpleJdbcTemplate.queryForObject(
@@ -190,7 +190,7 @@ public class SimpleJdbcClinic implements Clinic, SimpleJdbcClinicMBean {
 		catch (EmptyResultDataAccessException ex) {
 			throw new ObjectRetrievalFailureException(Pet.class, new Integer(id));
 		}
-		Owner owner = loadOwner(pet.getOwnerId());
+		Owner owner = findOwner(pet.getOwnerId());
 		owner.addPet(pet);
 		pet.setType(EntityUtils.getById(getPetTypes(), PetType.class, pet.getTypeId()));
 		loadVisits(pet);
diff --git a/src/main/java/org/springframework/samples/petclinic/jpa/EntityManagerClinic.java b/src/main/java/org/springframework/samples/petclinic/jpa/EntityManagerClinic.java
index 92fe1e2..d3fe8ef 100644
--- a/src/main/java/org/springframework/samples/petclinic/jpa/EntityManagerClinic.java
+++ b/src/main/java/org/springframework/samples/petclinic/jpa/EntityManagerClinic.java
@@ -55,12 +55,12 @@ public class EntityManagerClinic implements Clinic {
 	}
 
 	@Transactional(readOnly = true)
-	public Owner loadOwner(int id) {
+	public Owner findOwner(int id) {
 		return this.em.find(Owner.class, id);
 	}
 
 	@Transactional(readOnly = true)
-	public Pet loadPet(int id) {
+	public Pet findPet(int id) {
 		return this.em.find(Pet.class, id);
 	}
 
@@ -89,7 +89,7 @@ public class EntityManagerClinic implements Clinic {
 	}
 
 	public void deletePet(int id) throws DataAccessException {
-		Pet pet = loadPet(id);
+		Pet pet = findPet(id);
 		this.em.remove(pet);
 	}
 
diff --git a/src/main/java/org/springframework/samples/petclinic/NamedEntity.java b/src/main/java/org/springframework/samples/petclinic/NamedEntity.java
index 40c5931..f77348e 100644
--- a/src/main/java/org/springframework/samples/petclinic/NamedEntity.java
+++ b/src/main/java/org/springframework/samples/petclinic/NamedEntity.java
@@ -1,5 +1,8 @@
 package org.springframework.samples.petclinic;
 
+import javax.persistence.Column;
+import javax.persistence.MappedSuperclass;
+
 /**
  * Simple JavaBean domain object adds a name property to <code>BaseEntity</code>.
  * Used as a base class for objects needing these properties.
@@ -7,8 +10,10 @@ package org.springframework.samples.petclinic;
  * @author Ken Krebs
  * @author Juergen Hoeller
  */
+@MappedSuperclass
 public class NamedEntity extends BaseEntity {
 
+	@Column(name="name")
 	private String name;
 	
 
diff --git a/src/main/java/org/springframework/samples/petclinic/Owner.java b/src/main/java/org/springframework/samples/petclinic/Owner.java
index 75ea3bc..13639f9 100644
--- a/src/main/java/org/springframework/samples/petclinic/Owner.java
+++ b/src/main/java/org/springframework/samples/petclinic/Owner.java
@@ -6,6 +6,12 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+
 import org.springframework.beans.support.MutableSortDefinition;
 import org.springframework.beans.support.PropertyComparator;
 import org.springframework.core.style.ToStringCreator;
@@ -17,14 +23,18 @@ import org.springframework.core.style.ToStringCreator;
  * @author Juergen Hoeller
  * @author Sam Brannen
  */
+@Entity @Table(name="owners")
 public class Owner extends Person {
-
+	@Column(name="address")
 	private String address;
-
+	
+	@Column(name="city")
 	private String city;
 
+	@Column(name="telephone")
 	private String telephone;
 
+	@OneToMany(cascade=CascadeType.ALL, mappedBy="owner")
 	private Set<Pet> pets;
 
 
diff --git a/src/main/java/org/springframework/samples/petclinic/Person.java b/src/main/java/org/springframework/samples/petclinic/Person.java
index da7974a..8bfa1b5 100644
--- a/src/main/java/org/springframework/samples/petclinic/Person.java
+++ b/src/main/java/org/springframework/samples/petclinic/Person.java
@@ -1,15 +1,21 @@
 package org.springframework.samples.petclinic;
 
+import javax.persistence.Column;
+import javax.persistence.MappedSuperclass;
+
 /**
  * Simple JavaBean domain object representing an person.
  *
  * @author Ken Krebs
  */
+@MappedSuperclass
 public class Person extends BaseEntity {
+	
+	@Column(name="first_name")
+	protected String firstName;
 
-	private String firstName;
-
-	private String lastName;
+	@Column(name="last_name")
+	protected String lastName;
 
 	public String getFirstName() {
 		return this.firstName;
diff --git a/src/main/java/org/springframework/samples/petclinic/Pet.java b/src/main/java/org/springframework/samples/petclinic/Pet.java
index f5294b5..6b39158 100644
--- a/src/main/java/org/springframework/samples/petclinic/Pet.java
+++ b/src/main/java/org/springframework/samples/petclinic/Pet.java
@@ -7,6 +7,14 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+
 import org.springframework.beans.support.MutableSortDefinition;
 import org.springframework.beans.support.PropertyComparator;
 
@@ -17,14 +25,21 @@ import org.springframework.beans.support.PropertyComparator;
  * @author Juergen Hoeller
  * @author Sam Brannen
  */
+@Entity @Table(name="pets")
 public class Pet extends NamedEntity {
 
+	@Column(name="birth_date")
 	private Date birthDate;
 
+	@ManyToOne
+    @JoinColumn(name = "type_id")
 	private PetType type;
-
+	
+	@ManyToOne
+    @JoinColumn(name = "owner_id")
 	private Owner owner;
-
+	
+	@OneToMany(cascade=CascadeType.ALL, mappedBy="pet")
 	private Set<Visit> visits;
 
 
diff --git a/src/main/java/org/springframework/samples/petclinic/PetType.java b/src/main/java/org/springframework/samples/petclinic/PetType.java
index aaadc5c..4e4cebc 100644
--- a/src/main/java/org/springframework/samples/petclinic/PetType.java
+++ b/src/main/java/org/springframework/samples/petclinic/PetType.java
@@ -1,8 +1,12 @@
 package org.springframework.samples.petclinic;
 
+import javax.persistence.Entity;
+import javax.persistence.Table;
+
 /**
  * @author Juergen Hoeller
  */
+@Entity @Table(name="types")
 public class PetType extends NamedEntity {
 
 }
diff --git a/src/main/java/org/springframework/samples/petclinic/Specialty.java b/src/main/java/org/springframework/samples/petclinic/Specialty.java
index d19ccab..08a6e85 100644
--- a/src/main/java/org/springframework/samples/petclinic/Specialty.java
+++ b/src/main/java/org/springframework/samples/petclinic/Specialty.java
@@ -1,10 +1,14 @@
 package org.springframework.samples.petclinic;
 
+import javax.persistence.Entity;
+import javax.persistence.Table;
+
 /**
  * Models a {@link Vet Vet's} specialty (for example, dentistry).
  * 
  * @author Juergen Hoeller
  */
+@Entity @Table(name="specialties")
 public class Specialty extends NamedEntity {
 
 }
diff --git a/src/main/java/org/springframework/samples/petclinic/Vet.java b/src/main/java/org/springframework/samples/petclinic/Vet.java
index 9c7c8da..e4250ae 100644
--- a/src/main/java/org/springframework/samples/petclinic/Vet.java
+++ b/src/main/java/org/springframework/samples/petclinic/Vet.java
@@ -5,6 +5,10 @@ import java.util.Collections;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
+
+import javax.persistence.Entity;
+import javax.persistence.ManyToMany;
+import javax.persistence.Table;
 import javax.xml.bind.annotation.XmlElement;
 
 import org.springframework.beans.support.MutableSortDefinition;
@@ -18,8 +22,10 @@ import org.springframework.beans.support.PropertyComparator;
  * @author Sam Brannen
  * @author Arjen Poutsma
  */
+@Entity @Table(name="vets")
 public class Vet extends Person {
 
+	@ManyToMany
 	private Set<Specialty> specialties;
 
 
diff --git a/src/main/java/org/springframework/samples/petclinic/Visit.java b/src/main/java/org/springframework/samples/petclinic/Visit.java
index c42bdce..7d7502d 100644
--- a/src/main/java/org/springframework/samples/petclinic/Visit.java
+++ b/src/main/java/org/springframework/samples/petclinic/Visit.java
@@ -2,20 +2,31 @@ package org.springframework.samples.petclinic;
 
 import java.util.Date;
 
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+
 /**
  * Simple JavaBean domain object representing a visit.
  *
  * @author Ken Krebs
  */
+@Entity @Table(name="visits")
 public class Visit extends BaseEntity {
 
 	/** Holds value of property date. */
+	@Column(name="visit_date")
 	private Date date;
 
 	/** Holds value of property description. */
+	@Column(name="description")
 	private String description;
 
 	/** Holds value of property pet. */
+	@ManyToOne
+    @JoinColumn(name = "pet_id")
 	private Pet pet;
 
 
diff --git a/src/main/java/org/springframework/samples/petclinic/web/AddPetController.java b/src/main/java/org/springframework/samples/petclinic/web/AddPetController.java
index 314b301..3d429d4 100644
--- a/src/main/java/org/springframework/samples/petclinic/web/AddPetController.java
+++ b/src/main/java/org/springframework/samples/petclinic/web/AddPetController.java
@@ -54,7 +54,7 @@ public class AddPetController {
 
 	@RequestMapping(method = RequestMethod.GET)
 	public String setupForm(@PathVariable("ownerId") int ownerId, Model model) {
-		Owner owner = this.clinic.loadOwner(ownerId);
+		Owner owner = this.clinic.findOwner(ownerId);
 		Pet pet = new Pet();
 		owner.addPet(pet);
 		model.addAttribute("pet", pet);
diff --git a/src/main/java/org/springframework/samples/petclinic/web/AddVisitController.java b/src/main/java/org/springframework/samples/petclinic/web/AddVisitController.java
index 9312568..64a09ed 100644
--- a/src/main/java/org/springframework/samples/petclinic/web/AddVisitController.java
+++ b/src/main/java/org/springframework/samples/petclinic/web/AddVisitController.java
@@ -46,7 +46,7 @@ public class AddVisitController {
 
 	@RequestMapping(method = RequestMethod.GET)
 	public String setupForm(@PathVariable("petId") int petId, Model model) {
-		Pet pet = this.clinic.loadPet(petId);
+		Pet pet = this.clinic.findPet(petId);
 		Visit visit = new Visit();
 		pet.addVisit(visit);
 		model.addAttribute("visit", visit);
diff --git a/src/main/java/org/springframework/samples/petclinic/web/ClinicController.java b/src/main/java/org/springframework/samples/petclinic/web/ClinicController.java
index fa9f092..d624e4d 100644
--- a/src/main/java/org/springframework/samples/petclinic/web/ClinicController.java
+++ b/src/main/java/org/springframework/samples/petclinic/web/ClinicController.java
@@ -71,7 +71,7 @@ public class ClinicController {
 	@RequestMapping("/owners/{ownerId}")
 	public ModelAndView showOwner(@PathVariable("ownerId") int ownerId) {
 		ModelAndView mav = new ModelAndView("owners/show");
-		mav.addObject(this.clinic.loadOwner(ownerId));
+		mav.addObject(this.clinic.findOwner(ownerId));
 		return mav;
 	}
 
@@ -84,7 +84,7 @@ public class ClinicController {
 	@RequestMapping(value="/owners/*/pets/{petId}/visits", method=RequestMethod.GET)
 	public ModelAndView visitsHandler(@PathVariable int petId) {
 		ModelAndView mav = new ModelAndView("visits");
-		mav.addObject("visits", this.clinic.loadPet(petId).getVisits());
+		mav.addObject("visits", this.clinic.findPet(petId).getVisits());
 		return mav;
 	}
 
diff --git a/src/main/java/org/springframework/samples/petclinic/web/EditOwnerController.java b/src/main/java/org/springframework/samples/petclinic/web/EditOwnerController.java
index e602f75..5c83018 100644
--- a/src/main/java/org/springframework/samples/petclinic/web/EditOwnerController.java
+++ b/src/main/java/org/springframework/samples/petclinic/web/EditOwnerController.java
@@ -44,7 +44,7 @@ public class EditOwnerController {
 
 	@RequestMapping(method = RequestMethod.GET)
 	public String setupForm(@PathVariable("ownerId") int ownerId, Model model) {
-		Owner owner = this.clinic.loadOwner(ownerId);
+		Owner owner = this.clinic.findOwner(ownerId);
 		model.addAttribute(owner);
 		return "owners/form";
 	}
diff --git a/src/main/java/org/springframework/samples/petclinic/web/EditPetController.java b/src/main/java/org/springframework/samples/petclinic/web/EditPetController.java
index c7703c1..129f078 100644
--- a/src/main/java/org/springframework/samples/petclinic/web/EditPetController.java
+++ b/src/main/java/org/springframework/samples/petclinic/web/EditPetController.java
@@ -52,7 +52,7 @@ public class EditPetController {
 
 	@RequestMapping(method = RequestMethod.GET)
 	public String setupForm(@PathVariable("petId") int petId, Model model) {
-		Pet pet = this.clinic.loadPet(petId);
+		Pet pet = this.clinic.findPet(petId);
 		model.addAttribute("pet", pet);
 		return "pets/form";
 	}
@@ -72,7 +72,7 @@ public class EditPetController {
 
 	@RequestMapping(method = RequestMethod.DELETE)
 	public String deletePet(@PathVariable int petId) {
-		Pet pet = this.clinic.loadPet(petId);
+		Pet pet = this.clinic.findPet(petId);
 		this.clinic.deletePet(petId);
 		return "redirect:/owners/" + pet.getOwner().getId();
 	}
diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml
index 43c322b..b8dad07 100644
--- a/src/main/webapp/WEB-INF/web.xml
+++ b/src/main/webapp/WEB-INF/web.xml
@@ -37,7 +37,7 @@
 	-->
 	<context-param>
 		<param-name>contextConfigLocation</param-name>
-		<param-value>/WEB-INF/spring/applicationContext-jdbc.xml</param-value>
+		<param-value>classpath:spring/applicationContext-jdbc.xml</param-value>
         <!--
 		<param-value>/WEB-INF/spring/applicationContext-hibernate.xml</param-value>
 		<param-value>/WEB-INF/spring/applicationContext-jpa.xml</param-value>
diff --git a/src/test/java/org/springframework/samples/petclinic/AbstractClinicTests.java b/src/test/java/org/springframework/samples/petclinic/AbstractClinicTests.java
index a62cb20..4d7b411 100644
--- a/src/test/java/org/springframework/samples/petclinic/AbstractClinicTests.java
+++ b/src/test/java/org/springframework/samples/petclinic/AbstractClinicTests.java
@@ -123,9 +123,9 @@ public abstract class AbstractClinicTests {
 
 	@Test
 	public void loadOwner() {
-		Owner o1 = this.clinic.loadOwner(1);
+		Owner o1 = this.clinic.findOwner(1);
 		assertTrue(o1.getLastName().startsWith("Franklin"));
-		Owner o10 = this.clinic.loadOwner(10);
+		Owner o10 = this.clinic.findOwner(10);
 		assertEquals("Carlos", o10.getFirstName());
 
 		// XXX: Add programmatic support for ending transactions with the
@@ -154,22 +154,22 @@ public abstract class AbstractClinicTests {
 
 	@Test
 	public void updateOwner() throws Exception {
-		Owner o1 = this.clinic.loadOwner(1);
+		Owner o1 = this.clinic.findOwner(1);
 		String old = o1.getLastName();
 		o1.setLastName(old + "X");
 		this.clinic.storeOwner(o1);
-		o1 = this.clinic.loadOwner(1);
+		o1 = this.clinic.findOwner(1);
 		assertEquals(old + "X", o1.getLastName());
 	}
 
 	@Test
 	public void loadPet() {
 		Collection<PetType> types = this.clinic.getPetTypes();
-		Pet p7 = this.clinic.loadPet(7);
+		Pet p7 = this.clinic.findPet(7);
 		assertTrue(p7.getName().startsWith("Samantha"));
 		assertEquals(EntityUtils.getById(types, PetType.class, 1).getId(), p7.getType().getId());
 		assertEquals("Jean", p7.getOwner().getFirstName());
-		Pet p6 = this.clinic.loadPet(6);
+		Pet p6 = this.clinic.findPet(6);
 		assertEquals("George", p6.getName());
 		assertEquals(EntityUtils.getById(types, PetType.class, 4).getId(), p6.getType().getId());
 		assertEquals("Peter", p6.getOwner().getFirstName());
@@ -177,7 +177,7 @@ public abstract class AbstractClinicTests {
 
 	@Test
 	public void insertPet() {
-		Owner o6 = this.clinic.loadOwner(6);
+		Owner o6 = this.clinic.findOwner(6);
 		int found = o6.getPets().size();
 		Pet pet = new Pet();
 		pet.setName("bowser");
@@ -190,23 +190,23 @@ public abstract class AbstractClinicTests {
 		this.clinic.storePet(pet);
 		this.clinic.storeOwner(o6);
 		// assertTrue(!pet.isNew()); -- NOT TRUE FOR TOPLINK (before commit)
-		o6 = this.clinic.loadOwner(6);
+		o6 = this.clinic.findOwner(6);
 		assertEquals(found + 1, o6.getPets().size());
 	}
 
 	@Test
 	public void updatePet() throws Exception {
-		Pet p7 = this.clinic.loadPet(7);
+		Pet p7 = this.clinic.findPet(7);
 		String old = p7.getName();
 		p7.setName(old + "X");
 		this.clinic.storePet(p7);
-		p7 = this.clinic.loadPet(7);
+		p7 = this.clinic.findPet(7);
 		assertEquals(old + "X", p7.getName());
 	}
 
 	@Test
 	public void insertVisit() {
-		Pet p7 = this.clinic.loadPet(7);
+		Pet p7 = this.clinic.findPet(7);
 		int found = p7.getVisits().size();
 		Visit visit = new Visit();
 		p7.addVisit(visit);
@@ -215,7 +215,7 @@ public abstract class AbstractClinicTests {
 		this.clinic.storeVisit(visit);
 		this.clinic.storePet(p7);
 		// assertTrue(!visit.isNew()); -- NOT TRUE FOR TOPLINK (before commit)
-		p7 = this.clinic.loadPet(7);
+		p7 = this.clinic.findPet(7);
 		assertEquals(found + 1, p7.getVisits().size());
 	}