这可能更像是一个“设计”或风格问题:我一直在考虑 Hibernate 事务应该或可能有多复杂。我正在使用一个使用 Hibernate 将消息持久保存到数据库的应用程序。
构建消息 POJO 涉及将消息中的一对多关系分解到它们各自的持久对象中。例如,消息包含“城市”字段。从消息中提取城市,数据库搜索等效的城市对象并将结果对象添加到消息 POJO。所有这些都在一个事务中完成:
- 开始交易
- 重复测试
- 检索城市对象
- 消息对象中的 setCity(cityObject)
- 检索国家对象
- 消息对象中的 setCountry(countryObject)
- 持久化消息对象
- 提交结束事务
事实上,实际交易要复杂得多。这是一个合理的结构还是应该在单个事务中完成每个任务(而不是在一个事务中完成所有任务)?我想第二个问题与在事务中设计任务的最佳实践有关。我了解某些任务需要为参照完整性进行分组,但情况并非总是如此。