Java 我真的需要数据库事务吗?

Java 我真的需要数据库事务吗?,java,database,transactions,spring-data-jpa,Java,Database,Transactions,Spring Data Jpa,如果我的方法有几个只读的update,delete语句,那么创建事务有意义吗?虽然,在表面上它没有任何意义,如果它是单螺纹;但这是一个并发的web应用程序,其中多个线程可以同时修改数据。如果您在方法中有多个数据库操作INSERT、UPDATE、DELETE,则将有使用横切的点。如果您有多个数据库操作INSERT、UPDATE、,在方法中删除如果此方法执行例如2次读取,并且有另一种方法正在更新数据库,则将有使用横切的点。可能发生的情况是,一次读取发生,然后另一个事务方法并发运行,并且只有在第二次读

如果我的方法有几个只读的update,delete语句,那么创建事务有意义吗?虽然,在表面上它没有任何意义,如果它是单螺纹;但这是一个并发的web应用程序,其中多个线程可以同时修改数据。

如果您在方法中有多个数据库操作INSERT、UPDATE、DELETE,则将有使用横切的点。

如果您有多个数据库操作INSERT、UPDATE、,在方法中删除如果此方法执行例如2次读取,并且有另一种方法正在更新数据库,则将有使用横切的点。可能发生的情况是,一次读取发生,然后另一个事务方法并发运行,并且只有在第二次读取执行之后。这可能会导致无效的读取结果。

如果此方法执行例如两次读取,并且有另一个方法正在更新数据库。可能发生的情况是,一次读取发生,然后另一个事务方法并发运行,并且只有在第二次读取执行之后。这可能会导致无效的读取结果。

是的,可能有充分的理由将您的读取选择操作包含在显式事务或工作单元中。如果更新或删除某行的决定取决于同一行中某行的列值,或您读取的另一个表中某行的列值,甚至取决于某行的存在,那么您可能需要将该选择作为事务的一部分来执行

一个简单的例子:表A包含书籍,并且有一个int列用于评级。如果某一图书行的评级为0,我想将其删除。在没有事务的情况下,数据层中的代码选择评级为0的行,然后迭代该图书行集合。选择行后,另一个用户会将其中一本书的评级更改为1。你仍然会删除那本不该删除的图书行

有数据一致性和检查更新的策略,因为您已经获取了数据时间戳等,但您只需要在读取数据并从该数据中做出决策时评估数据完整性的风险,并且允许其他用户对该数据进行更新


事务旨在消除这种风险。

是的,在显式事务或工作单元中包含读选择操作可能是有充分理由的。如果更新或删除某行的决定取决于同一行中某行的列值,或您读取的另一个表中某行的列值,甚至取决于某行的存在,那么您可能需要将该选择作为事务的一部分来执行

一个简单的例子:表A包含书籍,并且有一个int列用于评级。如果某一图书行的评级为0,我想将其删除。在没有事务的情况下,数据层中的代码选择评级为0的行,然后迭代该图书行集合。选择行后,另一个用户会将其中一本书的评级更改为1。你仍然会删除那本不该删除的图书行

有数据一致性和检查更新的策略,因为您已经获取了数据时间戳等,但您只需要在读取数据并从该数据中做出决策时评估数据完整性的风险,并且允许其他用户对该数据进行更新


事务是为了消除风险。

系统中可能有其他方法在这个中间写入数据库吗?可以看到部分更新的数据吗?如果您重视数据的一致性,则可以。如果您不关心您的数据是否已损坏,或者您的数据库一次只被一个用户访问,那么就不关心了。我对这个问题做了一些修改。这是一个并发的web应用程序。但没有特定的事务要求。系统中的其他方法是否可能在此中间写入数据库?可以看到部分更新的数据吗?如果您重视数据的一致性,则可以。如果您不关心您的数据是否已损坏,或者您的数据库一次只被一个用户访问,那么就不关心了。我对这个问题做了一些修改。这是一个并发的web应用程序。但没有具体的交易要求。