当前位置: 首页 > 面试题库 >

根据请求可变的事务隔离级别

公西承
2023-03-14
问题内容

我正在编写一个小小的拍卖应用程序,因此务必要确定我的出价,这一点非常重要。毕竟,拍卖的最后几秒钟对买家来说是关键时刻,我不能冒险让他们同时竞标和拥有比赛条件。

当然,这就是事务隔离的目的。我可以将隔离级别设置为可序列化,并且一切就绪。

但是其他所有请求呢?如果人们正在查看个人资料或发送消息,则这些请求不需要这种事务隔离。对于这些请求,完全可以接受读取的提交隔离级别。

我将事务级别设置为我的hibernate属性的一部分hibernate.connection.isolation,但我真的很希望能够session.setTransactionIsolation(newIsolation)根据请求执行某些操作。


问题答案:
Session session = getSession(dataSource, sessionFactory, Connection.TRANSACTION_SERIALIZABLE);

public Session getSession(DataSource dataSource, SessionFactory sessionFactory, int isolationLevel){

  // Get connection from current dataSource and set new isolation
  Connection connectionWithNewIsolation = dataSource.getConnection();
  connectionWithNewIsolation.setTransactionIsolation(isolationLevel);

  // Get session from current sessionFactory with the new isolation
  Session session = sessionFactory.openSession(connectionWithNewIsolation);

  // Hibernate 4.3
  //SessionFactory.openStatelessSession(Connection connection)
  // Hibernate 3.6
  //SessionFactory.openSession(Connection connection)
  //SessionFactory.openStatelessSession(Connection connection)

  return session;
}


 类似资料:
  • 我正在写一个小拍卖app,这是非常重要的,我的出价是有把握的记录。毕竟,拍卖的最后几秒钟是买家的关键时刻,我不能冒险让他们同时出价和竞争。 当然,这就是事务隔离的目的。我可以将我的隔离级别设置为可序列化,然后我们就都设置好了。 但是其他的请求呢?如果用户正在查看配置文件或发送消息,则这些请求不需要任何接近那种事务隔离的地方。对于这些请求,“已提交读”隔离级别是完全可以接受的。 我正在将事务级别设置

  • 主要内容:事务概述,事务的四大特性,并发事务问题,事务的隔离级别,演示:,总结事务概述 事务是一个或一组sql语句组成的一个执行单元,这个执行单元要么全部执行成功,要么全部执行失败。用于保证数据的完整性。 如账户转账,张三给李四转500,对应的sql语句应该是update张三的 余额-500,并且update李四的余额+500,如果先更新完张三的数据,然后出现了异常,导致李四的余额修改不了,那么就出现数据上的问题了,应该使用事务来解决这一问题,当中间出现异常后回滚,让张三的

  • 本文向大家介绍事务的隔离级别有哪些?相关面试题,主要包含被问及事务的隔离级别有哪些?时的应答技巧和注意事项,需要的朋友参考一下 SQL 标准定义了四个隔离级别: READ-UNCOMMITTED(读取未提交): 最低的隔离级别,允许读取尚未提交的数据变更,可能会导致脏读、幻读或不可重复读。 READ-COMMITTED(读取已提交): 允许读取并发事务已经提交的数据,可以阻止脏读,但是幻读或不可重

  • 我有一个对具有 SQL API 的 Cosmos 容器的长期运行查询,该查询需要 10 分钟以上才能完成。有没有办法将数据库的隔离级别设置为“可重复读取”或“可序列化”,以避免幻像读取,如这里所定义的那样? 我知道我们可以为 Cosmos DB 设置一致性级别,但它仅适用于地质副本之间的读/写一致性,而不适用于事务隔离。

  • 本文向大家介绍MySQL的默认事务隔离级别是?相关面试题,主要包含被问及MySQL的默认事务隔离级别是?时的应答技巧和注意事项,需要的朋友参考一下 读未提交(RU): 一个事务还没提交时, 它做的变更就能被别的事务看到. 读提交(RC): 一个事务提交之后, 它做的变更才会被其他事务看到. 可重复读(RR): 一个事务执行过程中看到的数据, 总是跟这个事务在启动时看到的数据是一致的. 当然在可重复

  • 我将spring应用程序连接到smartbaer servicev,在那里创建了虚拟数据源(Postgres)。 驱动程序类: 连接字符串(本地servicev虚拟服务器url): 应用程序.属性:- spring.datasource.driver-class-name=com.smartbear.servicev.jdbc.driver.jdbcvirtdriver spring.dataso