我也搜索了一下,发现这个帖子和我的问题比较像: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修改过]
你用的是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兄说的我不太肯定,但是我也发现基本需要service的地方,都不会是单独的一个Entity参与其中.是否每个Entity都对应一个Service并不重要,我觉得只要抓住业务的核心就没有问题,具体需要多少service由业务系统决定.
killer兄说的我不太肯定,但是我也发现基本需要service的地方,都不会是单独的一个Entity参与其中.是否每个Entity都对应一个Service并不重要,我觉得只要抓住业务的核心就没有问题,具体需要多少service由业务系统决定.
同意