/ / Spring DaoSupport та @PersistanceContext EntityManager? - java, весна, jpa, наполегливість, дао

Навесні DaoSupport і @PersistanceContext EntityManager? - java, spring, jpa, persistence, dao

Однією з найскладніших речей щодо розуміння Весни є те, що Весна підтримує декілька підходів до однієї проблеми.

Отже, у своїй програмі я використовую ін'єктований EntityManager, використовуючи примітку @PersistanceContext, наприклад:

@Repository
public class JpaDao extends JpaDaoSupport implements Dao {

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

Чи сумісний такий підхід із розширенням JpaDaoSupport (що вимагає введення в EntityManager)? Мені це здається двома несумісними підходами до вирішення однієї і тієї ж проблеми, але я хотів би радити того, хто має більший досвід роботи з Spring.

Якщо я не повинен продовжувати JpaDaoSupport, як я повинен будувати свій DAO, використовуючи підхід @PersistenceContext?

Відповіді:

4 для відповіді № 1

Ви виправляєте, що вони дві різніпідходи до тієї ж проблеми. Який із них "кращий" - це питання смаку, я думаю. Використання приміток має перевагу уникнути залежностей від імпорту Spring у вашому коді та навіть для Spring JavaDoc для JpaDaoSupport пропонує використовувати їх для нових проектів JPA. JpaDaoSupport чи існує можливість підтримки Spring для JPA рівнозначною підтримці для інших стратегій ORM (HibernateDaoSupport, JdbcDaoSupport, TopLinkDaoSupportтощо). У цих випадках введення на основі анотацій не є можливим.


1 для відповіді № 2

Для введення EntityManager вам просто потрібно додати наступне визначення

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

ви можете отримати більше інформації про цю тему в цей пост з офіційного блогу


0 для відповіді № 3

Я скоріше рекомендую вам не продовжуватиJpaDaoSupport, весна зробить все за вас. Перейдіть за посиланням, запропонованим diega для отримання додаткової інформації, в тому самому блозі, де я перейшов, щоб оновити свою програму для підтримки весни - jpa.