该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2008-05-21
quaff 写道 galaxystar 写道 如果是分布式数据访问,远程调用?对象是反序列化生成的,那么这个是否只能在服务端进行静态注入?
加上transient 可能没表达清楚,就是说,服务端返回的domain object应该是具有客户端远程调用功能的,这个功能的实现,可以理解为dao。 这个dao需要在服务端将对象返回到客户端后,注入进去(现在是通过AOP这么做的)。 或者服务端就将客户端实现注入进去,但是这种做法,会导致服务端跟客户端的耦合。 |
|
返回顶楼 | |
发表时间:2008-05-22
用一句话概括spring就是:“开发人员需要某一个对象实例的时候可以去取,关于对象的创建和对象之间的依赖关系,就让spring去维护吧”,如果我们再去维护过多的依赖关系,比如说你的领域对象domain object,其中依赖了许多的dao,违背了spring的初衷。
假如你的Teacher,Student...业务逻辑有变化,例如学校要给每一个Teacher,Student建立医保档案,可能又需要在Teacher,Student中加入一个用于处理医保的dao了,不仅违背了OO的思想,也不符合当前的业务需要。 |
|
返回顶楼 | |
发表时间:2008-05-22
ljl 写道 用一句话概括spring就是:“开发人员需要某一个对象实例的时候可以去取,关于对象的创建和对象之间的依赖关系,就让spring去维护吧”,如果我们再去维护过多的依赖关系,比如说你的领域对象domain object,其中依赖了许多的dao,违背了spring的初衷。
假如你的Teacher,Student...业务逻辑有变化,例如学校要给每一个Teacher,Student建立医保档案,可能又需要在Teacher,Student中加入一个用于处理医保的dao了,不仅违背了OO的思想,也不符合当前的业务需要。 帖子的第一句话就声明了,你这个是质疑domain model,推荐你可以看看以前关于domain model的帖子以及相关的书籍,主要有《企业应用架构模式》,《领域驱动开发》和《pojos in action》,全都有中文版。 |
|
返回顶楼 | |
发表时间:2008-05-22
galaxystar 写道 quaff 写道 galaxystar 写道 如果是分布式数据访问,远程调用?对象是反序列化生成的,那么这个是否只能在服务端进行静态注入?
加上transient 可能没表达清楚,就是说,服务端返回的domain object应该是具有客户端远程调用功能的,这个功能的实现,可以理解为dao。 这个dao需要在服务端将对象返回到客户端后,注入进去(现在是通过AOP这么做的)。 或者服务端就将客户端实现注入进去,但是这种做法,会导致服务端跟客户端的耦合。 返回给客户端的Domain Object应该设计成只作为数据载体,dao是没办法也传到客户端的 |
|
返回顶楼 | |
发表时间:2008-05-22
楼主的想法不错,不过domain object不能直接暴露给Action,必须用service加事务脚本,可不可以直接依赖注入service呢?
|
|
返回顶楼 | |
发表时间:2008-05-23
galaxystar 写道 quaff 写道 galaxystar 写道 如果是分布式数据访问,远程调用?对象是反序列化生成的,那么这个是否只能在服务端进行静态注入?
加上transient 可能没表达清楚,就是说,服务端返回的domain object应该是具有客户端远程调用功能的,这个功能的实现,可以理解为dao。 这个dao需要在服务端将对象返回到客户端后,注入进去(现在是通过AOP这么做的)。 或者服务端就将客户端实现注入进去,但是这种做法,会导致服务端跟客户端的耦合。 这种设计不是这样的,在服务器端的service层就是DomainObject的运行边界(同时也是事务的边界),客户端到服务器端(进程外/远程通信)是通过DTO对象或者一些简单数据(Array,List,Map,String,Integer)的组合,进行交互。 |
|
返回顶楼 | |
发表时间:2008-06-02
恕我眼拙,我在《领域驱动开发》和《pojos in action》当中通篇都找不到domain object 需要依赖dao的证据。
|
|
返回顶楼 | |
发表时间:2008-06-02
nighthawk 写道 恕我眼拙,我在《领域驱动开发》和《pojos in action》当中通篇都找不到domain object 需要依赖dao的证据。
呵呵,拿《pojos in action》来说,第88页,“实现方法”“访问仓库的各种选择”,以及其代码中的注释How to access this?都是说明如何将Repository(也就是Dao)放进到 Domain Object里。 |
|
返回顶楼 | |
发表时间:2008-06-04
http://blog.springsource.com/main/2008/01/23/new-improvements-in-domain-object-dependnecy-injection-feature/
与这个篇文章相比有什么不同?其中关键字 transient的使用有点不明白,请指教? |
|
返回顶楼 | |
发表时间:2008-06-04
http://blog.springsource.com/main/2008/01/23/new-improvements-in-domain-object-dependnecy-injection-feature/
与这个篇文章相比有什么不同?其中关键字 transient的使用有点不明白,请指教? |
|
返回顶楼 | |