论坛首页 Java企业应用论坛

Domain injection with AOP

浏览 31960 次
该帖已经被评为精华帖
作者 正文
   发表时间:2005-09-02  
myace 写道
UnitOfWork虽然是个不错的想法,但是OR映射时复杂的,感觉这种简单的方法很难解决全部问题,这点好像Martin Fowler也说了。
况且 new 一个对象并不意味着在数据库中添加一条数据。

赫赫,不要“感觉,好像”,你如果有具体的实例,俺倒是想尝试一下能否全部解决。至少俺碰到的项目还有没有解决不了的。
没好好看俺的草案不是。new一个对象是不代表创建一个业务对象,所以俺的Asepct只捕获在service..*和domain..*中,DomainObject的 new。
0 请登录后投票
   发表时间:2005-09-02  
partech 写道
myace 写道
UnitOfWork虽然是个不错的想法,但是OR映射时复杂的,感觉这种简单的方法很难解决全部问题,这点好像Martin Fowler也说了。
况且 new 一个对象并不意味着在数据库中添加一条数据。

赫赫,不要“感觉,好像”,你如果有具体的实例,俺倒是想尝试一下能否全部解决。至少俺碰到的项目还有没有解决不了的。
没好好看俺的草案不是。new一个对象是不代表创建一个业务对象,所以俺的Asepct只捕获在service..*和domain..*中,DomainObject的 new。


嗯,实践才好说话。
0 请登录后投票
   发表时间:2005-09-03  
嗯,是我没有眼光,可能扫得比较粗略。
呵呵,其实是我看问题的角度与你不同。你的UnitOfWork只关注事务处理,与我的Domain injection完全不是一回事。

所以你只关心对象的new,destroy和modify。而不用关心直接用O/R Mapping查出来的对象(因为它没有改变状态)。所以在你的UnitOfWork里是可以控制的这些对象的生命周期的。 而我关心的是Domain Object拿到后处理它的业务逻辑。可能说多了又糊涂了,就此打住啦!


用AOP处理UnitOfWork确实是个不错的创意,不过感觉实践起来确实会碰到一些问题的。呵呵,不谈感觉了,实践出真知,希望你早日完成。
0 请登录后投票
   发表时间:2006-11-11  
分析的很好,以前都用的手动注入。。。
不过spring 2.0利用aspectJ不是可以IOC。。。没这么麻烦吧 我也认为应该统一父类,DomainModel即包含数据又包含逻辑,那么ID属性代表其PO的特征,并且带简单的,针对自身的持久化操作,把这些通用的属性和方法抽象到父类难道不是OO设计的原则吗。我的做法是这样的。

统一父类DomainObject,其中有ID属性和SET、GET方法,做SAVE,DELET之类的方法,并用aspectJ注入sessionFactory,所有DomainModel继承该父类,并加入domain logic,实现rich domain model,整个系统完全舍弃DAO,而使用DQO,即data query object也就是QueryManager,QueryObject之类的做复杂关联查询,持久化时order.save(),这不是很清爽?
0 请登录后投票
   发表时间:2006-11-19  
我用了aspect 容器外注射。速度太慢了,,70个表左右 居然要启动2分钟,大汗。。。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics