Example 3. PersonTemplateDaoImpl
@Repository @Transactional(readOnly = true) public class PersonTemplateDaoImpl extends JpaDaoSupport implements PersonTemplateDao { /** * Constructor */ @Autowired public PersonTemplateDaoImpl(EntityManagerFactory entityManagerFactory) { super.setEntityManagerFactory(entityManagerFactory); } /** * Find persons. */ @SuppressWarnings("unchecked") public Collection<Person> findPersons() { return getJpaTemplate().find("from Person"); } /** * Find persons by last name. */ @SuppressWarnings("unchecked") public Collection<Person> findPersonsByLastName(String lastName) { return getJpaTemplate().find("from Person p where p.lastName = ?", lastName); } /** * Saves person. */ @Transactional(readOnly = false, propagation = Propagation.REQUIRES_NEW) public void save(Person person) { getJpaTemplate().merge(person); } }