我正在编写一个小小的拍卖应用程序,因此务必要确定我的出价,这一点非常重要。毕竟,拍卖的最后几秒钟对买家来说是关键时刻,我不能冒险让他们同时竞标和拥有比赛条件。
当然,这就是事务隔离的目的。我可以将隔离级别设置为可序列化,并且一切就绪。
但是其他所有请求呢?如果人们正在查看个人资料或发送消息,则这些请求不需要这种事务隔离。对于这些请求,完全可以接受读取的提交隔离级别。
我将事务级别设置为我的hibernate属性的一部分hibernate.connection.isolation,但我真的很希望能够session.setTransactionIsolation(newIsolation)根据请求执行某些操作。
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; }