views:

79

answers:

1

First, we create classes that represent db entities, ok, done. Let's say we use Hibernate session factory and JPA annotations.

Now we must create a DAO: getUserById, getAllUsers() etc.

What do you recommend about transaction management, session factory, how a good design to be made?

+5  A: 
  1. Make the DAO generic. See the Don't repeat the DAO article.
  2. Transaction management should be spring-managed. Use a JpaTransactionManager. Transactions can be marked in two ways, and they should mark methods of the service classes, not the DAO:
    • using @Transactional on each transactional method (in combination with <tx:annotation-driven /> in applicationContext.xml)
    • using <tx:advice> and the appropriate <aop:config>
  3. Use OpenEntityManagerInViewFilter or OpenEntityManagerInViewInterceptor in order to avoid LazyInitializationException

Read this for more details.

Bozho