2010-03-15 6 views
1

D'abord, nous créons des classes qui représentent des entités db, ok, done. Supposons que nous utilisions la fabrique de sessions Hibernate et les annotations JPA.Comment voyez-vous un bon design de module Spring + Hibernate DAO?

Maintenant, nous devons créer un DAO: getUserById, getAllUsers() etc.

Que recommandez-vous sur la gestion des transactions, l'usine de session, comment une bonne conception à réaliser?

+0

Il peut être utile de connaître un peu l'historique de cette question: http://stackoverflow.com/questions/2447003/dao-spring-and-hibernate – BalusC

Répondre

7
  1. Rendre le DAO générique. Voir l'article Don't repeat the DAO.
  2. La gestion des transactions devrait être gérée par un ressort. Utilisez un JpaTransactionManager. Les transactions peuvent être marquées de deux manières, et ils doivent marquer les méthodes des classes de service, pas le DAO:
    • utilisant @Transactional sur chaque méthode transactionnelle (en combinaison avec <tx:annotation-driven /> dans applicationContext.xml)
    • utilisant <tx:advice> et le <aop:config> approprié
  3. Utilisez OpenEntityManagerInViewFilter ou OpenEntityManagerInViewInterceptor afin d'éviter LazyInitializationException

Read this pour plus de détails.