如何在EJB3.0架构下进行DDD实践。
如何在EJB3.O架构下来进行DDD实践,一般在项目中,我是这样做的:
表现层Action-->BusinessDelegate(业务委托)-->服务门面(session bean)-->domain object.
站在DDD的角度来说,应用层的服务可以通过有态或者无态的session bean来实现,在EJB3.0中提供了持久化服务,我们可以通过EntityManager对实体进行CRUD操作,现在的问题就是如何封装EntityManager。在Respository中封装可以吗?具体如何封装?如果采用JTA事务,无论会是CMT还是BMT,则Respository必然于EJB3.0架构产生了耦合,也就降低了领域模型的复用性。我们怎么样封装EntityManager才能做到即可以使用容器提供的持久化服务,又符合DDD实践要求呢?
Hibernate是JPA的超集,所以我们可以不用容器提供的持久化服务,自己通过Hibernate来实现,这样以来就容易通过Hibernate来实现Respository了,但是我觉得用EntityManager满方便的,所以想将EntityManager独立的封装起来,然后Resposity通过EntityManager和具体的数据库打交道,但是这样有个问题,如果采用JTA事务,那么Respostory也要通过EJB的组件来实现了,所以才有此种疑问,还请各位给点意见,多谢了。
[该贴被xmuzyu于2008-08-15 20:17修改过]