Spring DaoSupport and @PersistanceContext EntityManager?

Spring DaoSupport and @PersistanceContext EntityManager?

One of the most difficult things about understand Spring is that Spring supports multiple approaches to the same problem.

So in my application I using injected EntityManager using the @PersistanceContext annotation, for example:

@Repository public class JpaDao extends JpaDaoSupport implements Dao {      @PersistenceContext(unitName = "PersistanceUnit", type = PersistenceContextType.EXTENDED)     private EntityManager em; 

Is this approach compatible with extending JpaDaoSupport (which requires injecting in an EntityManager)? To me it looks like two incompatible approaches to the solving the same problem, but I would like some advice from someone who has more experience with Spring.

If I shouldn't be extending JpaDaoSupport, how should I build my DAO using the @PersistenceContext approach?

Connect to a Read Only database


Getting Spring Application context from a non bean object without using Singleton
You're correct that they are two different approaches to the same problem.

When using Spring Security, what is the proper way to obtain current username (i.e. SecurityContext) information in a bean?
Which one is "better" is a matter of taste, I think.

Building a data layer using Spring JdbcTemplate
Using annotations has the benefit of avoiding Spring import dependencies in your code, and even the Spring JavaDoc for JpaDaoSupport suggests using them for new JPA projects.

Java web application properties
JpaDaoSupport is there to make Spring's support for JPA equivalent to its support for other ORM strategies (HibernateDaoSupport, JdbcDaoSupport, TopLinkDaoSupport, etc.).

Spring MVC validation with Annotations
In those cases, annotation-based injection isn't an option..
Best way to validate URL parameters in Spring MVC website?

Lazy Loading DTO fields in Spring


For injecting the EntityManager you just need to add the next definition.
<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" /> 
you can get more information about this topic in this post from the oficial blog.


I would rather recommend you not to extend JpaDaoSupport, spring will do everything for you.

Follow the link suggested by diega for more information, same blog I have followed to upgrade my application to support spring - jpa.


76 out of 100 based on 46 user ratings 346 reviews