我是 hibernate 4 和 Spring 3.2 的初学者。我已经阅读了一些关于堆栈的教程和讨论,但我没有找到我的问题的明确答案。我认为最好的理解方式是提问和分享知识!
开始了!因此,您每次都创建一个 Pojo、一个 Dao、一个 Service 类,并使用带注释的方法进行事务处理。没关系。我正在使用 Sessionfactory 来处理我的事务。我正在寻找好的做法。
1-如果你想在同一个服务中使用删除方法和保存方法,你将如何使它在同一个事务中工作。当我查看日志时,每种方法都在不同的事务中执行。
这个 SampleServiceImpl:
@Transactional
public void save(Sample sample){
sampleDao.save(sample);
}
@Transactional
public void delete(Sample sample){
sampleDao.delete(sample);
}
// A solution could be that , but not very clean...there should be an another way, no?
@Transactional
public void action(Sample sample){
sampleDao.save(sample);
sampleDao.delete(sample);
}
2-如果你想使用不同服务类的删除方法和保存方法,你将如何使它在同一个事务中工作。因为每个服务类中的每个方法都由 Transactionnal 注解处理。您是否创建了一个全局服务,以一种标注为 Transactional 的方法调用所有子服务
SampleServiceImpl:
@Transactional
public void save(Sample sample){
sampleDao.save(sample);
}
ParcicipantServiceImpl
@Transactional
public void save(Participant participant){
participantDao.save(participant);
}
// A solution could be that , but not very clean...there should be an another way, no?
GlobalServiceImpl
@Transactional
public void save(Participant participant,Sample sample){
participantDao.save(participant);
sampleDao.save(sample);
}
3-最后一个问题但并非最不重要。如果您想在一个全局事务中使用来自多个服务的多个方法。想象一下,您想在一个独立程序的一次执行中填满 5 个或更多表。怎么可能,因为每个Service都有自己合适的事务方法,所以每次调用这个方法,就有一个事务。
a- 我已经成功地使用 Mkyong 教程和映射中的级联属性填充示例事务中的两个表。所以我看到了如何使它适用于一个直接连接到另一个或多个表的表。b- 但是,如果您有 3 个表参与者 -> 样本 -> 衍生产品。您将如何在同一事务中填写三个表。
我不知道我是否清楚。但我希望高级用户提供一些帮助或示例。非常感谢您的时间。