/ / Spring DaoSupport e @PersistanceContext EntityManager? - java, spring, jpa, persistence, dao

Spring DaoSupport e @PersistanceContext EntityManager? - java, spring, jpa, persistence, dao

Una delle cose più difficili di capire Spring è che Spring supporta più approcci allo stesso problema.

Così nella mia applicazione ho usato EntityManager iniettato usando l'annotazione @PersistanceContext, ad esempio:

@Repository
public class JpaDao extends JpaDaoSupport implements Dao {

@PersistenceContext(unitName = "PersistanceUnit", type = PersistenceContextType.EXTENDED)
private EntityManager em;

Questo approccio è compatibile con l'estensione di JpaDaoSupport (che richiede l'iniezione in un EntityManager)? A me sembrano due approcci incompatibili per risolvere lo stesso problema, ma vorrei un consiglio da qualcuno che ha più esperienza con Spring.

Se non dovrei estendere JpaDaoSupport, come dovrei costruire il mio DAO usando l'approccio @PersistenceContext?

risposte:

4 per risposta № 1

Correggi che sono due diversiapprocci allo stesso problema. Quello che è "migliore" è una questione di gusti, penso. L'utilizzo delle annotazioni ha il vantaggio di evitare le dipendenze di importazione Spring nel codice e persino JavaDoc Spring per JpaDaoSupport suggerisce di utilizzarli per nuovi progetti JPA. JpaDaoSupport è lì per rendere il supporto di Spring per JPA equivalente al suo supporto per altre strategie ORM (HibernateDaoSupport, JdbcDaoSupport, TopLinkDaoSupport, eccetera.). In questi casi, l'iniezione basata su annotazioni non è un'opzione.


1 per risposta № 2

Per l'iniezione di EntityManager è sufficiente aggiungere la definizione successiva

<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />

puoi avere maggiori informazioni su questo argomento in questo post dal blog ufficiale


0 per risposta № 3

Preferisco raccomandarti di non prolungareJpaDaoSupport, la primavera farà tutto per te. Segui il link suggerito da diega per maggiori informazioni, lo stesso blog che ho seguito per aggiornare la mia applicazione per supportare spring - jpa.