How do you see a good Spring+Hibernate DAO module design?
First, we create classes that represent db entities, ok, done. Let's say we use Hibernate session factory and JPA annotations.
Now we must creat开发者_StackOverflowe a DAO: getUserById, getAllUsers() etc.
What do you recommend about transaction management, session factory, how a good design to be made?
- Make the DAO generic. See the Don't repeat the DAO article.
- 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 />
inapplicationContext.xml
) - using
<tx:advice>
and the appropriate<aop:config>
- using
- Use
OpenEntityManagerInViewFilter
orOpenEntityManagerInViewInterceptor
in order to avoidLazyInitializationException
Read this for more details.
精彩评论