Dojo
最新
最佳
搜索
订阅
解道Jdon
架构设计
领域驱动
DDD介绍
DDD专辑
战略建模
领域语言UL
领域事件
商业分析
工作流BPM
规则引擎
架构师观点
数据工程
产品经理
系统思维
微服务
微服务介绍
微服务专辑
模块化设计
SOA
API设计
clean架构
SpringBoot
分布式事务
分布式架构
Kubernetes
DevOps
编程设计
GoF设计模式
模式专辑
面向对象
函数式编程
编程语言比较
编程工具比较
形式逻辑
前端编程
Reactive编程
Jdon框架
Rust语言
ChatGPT
Web3
模因梗
幽默梗
程序员吐槽
面试技巧
Java入门
数字化转型
认知偏差
道德经
GitHub工具
更多话题
业务层Service的粒度问题请教
07-12-08
power1128
在业务层的Service中,比如我有两个Entity,Entity1和Entity2,那么我有两个对应的Service,Entity1ervice和Entity2Service.如果有些业务过程要涉及到两个或者多个Entity,那这些业务过程写在哪里?再建个Entity1Entity2Service?
banq
2007-12-10 10:13
这需要结合Evans
DDD
来进行
业务分析
,找出核心之领域模型,如果涉及多个实体,找出这些实体中的核心实体,放在它的service中。
power1128
2007-12-11 19:17
还有个问题请教:事务的边界应该在哪里声明?
我也搜索了一下,发现这个帖子和我的问题比较像:http://www.jdon.com/jivejdon/thread/17055.html.在他那里讨论的是Dao,而我的困惑是在Service中.那个帖子在Dao的各个方法中,需要传入Connection,保证事务的灵活;那么是不是在Service中是不是也需要传入Session保证事务的灵活,因为可能有更大的事务,比如:
Transaction tx = session.beginTransaction();
service1.method1(session);
service2.method2(session);
tx.commit();
但是在Service的每个方法中传入Session这个东西感觉不太对
还有个问题,这个边界应该声明在一个粒度更粗的Service里,还是申明在别的地方,比如面向Web层的facade里?
[该贴被power1128于2007-12-11 19:22修改过]
banq
2007-12-12 14:37
>Transaction tx = session.beginTransaction();
你用的是Hibernate的事务,Hibernate属于持久层,不能跳出来跑到业务层的。
业务层有自己的事务机制 JTA。如下:
TransactionManager tx = jtaTransactionUtil.getTransactionManager();
try {
tx.begin();
Long mIDInt = messageRepository.getNextId(Constants.MESSAGE);
forumMessage.setMessageId(mIDInt);
beforeCreate(forumMessage); super.createTopicMessage(em);
tx.commit();
} catch (Exception e) {
logger.error(e);
em.setErrors(Constants.ERRORS);
jtaTransactionUtil.rollback(tx); }
[该贴被banq于2007-12-12 14:37修改过]
killer
2007-12-12 20:12
我觉得service和entity不是一一对应的,只有entity需要合其他entity合作而之间又没有直接关联时才有service的概念
power1128
2007-12-13 09:14
多谢banq,我先研究下JTA.以前没接触过,如果有问题再来请教.
killer兄说的我不太肯定,但是我也发现基本需要service的地方,都不会是单独的一个Entity参与其中.是否每个Entity都对应一个Service并不重要,我觉得只要抓住业务的核心就没有问题,具体需要多少service由业务系统决定.
power1128
2007-12-13 09:15
多谢banq,我先研究下JTA.以前没接触过,如果有问题再来请教.
killer兄说的我不太肯定,但是我也发现基本需要service的地方,都不会是单独的一个Entity参与其中.是否每个Entity都对应一个Service并不重要,我觉得只要抓住业务的核心就没有问题,具体需要多少service由业务系统决定.
killer
2007-12-13 10:19
>>我觉得只要抓住业务的核心就没有问题,具体需要多少service由业务系统决定.
同意
elegantyu
2008-03-28 17:05
同意
DDD领域服务
OOAD面向对象建模
DDD实体模型