service会不会因repository而变得也很薄

08-11-15 oriental2

repository的作用是管理对象的生命周期

重建对象.

在站内信中ShortMessageServiceImp中

public ToShortMessage getToShortMessage(Long msgId) {
		logger.debug("ShortMessageServiceImp getToShortMessage");
		ShortMessage smsg = this.repository.findShortMessage(msgId);		
		Account loginaccount = this.sessionContextUtil.getLoginAccount(sessionContext);
		//check auth
		if (!smsg.getMessageTo().equals(loginaccount.getUsername())){
			logger.error("msgId="+ msgId +" is not this user's =" + loginaccount.getUserId());
			return null;
		}
		ToShortMessage tosmsg = new ToShortMessage();
		try {
			PropertyUtils.copyProperties(tosmsg, smsg);
		} catch (Exception e) {
			e.printStackTrace();
		}

		return tosmsg;
	}

这应该是重建了shortmessage,为什么没有放在repository中,而放在了service?

由于对象的管理放到了repository中,service会不会因此而像action一样变得很薄,这也可能是因为我做的项目没有太多的业务逻辑,只是简单的CRUD,所以才有这样感觉?

banq
2008-11-15 12:51

JiveJdon是开源,站内消息是其他作者写的,匆忙不一定遵循DDD规则。

将Service变薄才是DDD的要求。Service不应该封装业务,只是业务的调用,这两者是不一样的。

[该贴被banq于2008-11-15 12:53修改过]

oojdon
2008-11-15 15:57

这个已经在hib版里面重构了

oriental2
2008-11-15 20:23

>>Service不应该封装业务,只是业务的调用

action,service都变薄了,那哪儿应该是重点呢?业务应该放到哪儿?