我对hibernate还不熟悉。请帮我设计一下下面的场景。
在预订网站中,用户可以单独预订机票,也可以同时预订机票和酒店。我如何设计hibernate中的事务管理,以便在以下情况下完全填充。
用户预订了机票和酒店,
1:机票预订成功,但由于系统问题,酒店预订不成功。在这种情况下,航班预订数据库将成功提交,但酒店数据库应回滚。
2:两次预订都成功完成。两个表都已提交。
3:如果航班预订失败,那么两个预订都会失败。这两个表都应该提交。
谢谢
发布于 2014-08-29 13:37:27
假设你将使用spring和hibernate,下面是你的问题的高级设计:
spring
现在,默认情况下,spring在抛出检查异常时不会回滚事务,这就是为什么需要使用@ transaction注释的回滚特性来仅标记FlightBookingException的原因。(例如:-@事务(rollbackFor= FlightBookingException.class))。这样做是为了实现上面问题中的点1和点3。
现在在spring配置文件中,您需要配置一个JTATransactionManager (请参阅文档Spring Transaction)。
最后,您可以编写一个Spring Junit来测试该特性。如果您有任何进一步的疑问,一定要让我们知道。
发布于 2014-08-29 13:42:38
选中两阶段提交。您可能想要围绕这些想法开发一些东西。
一种方法是,你可以进入航班预订系统并锁定资源。然后你去酒店预订系统试着预订。如果预订成功,那么您可以去预订航班。当您持有对资源的锁定时,您应该能够做到这一点。然而,有一些角落的情况下,你将需要照顾。
https://stackoverflow.com/questions/25561818
复制相似问题