In sleep mode, how to programmatically set the transaction isolation level or how to create two transactions with different isolation levels

I am using hibernate 3.6 with MSSQL 2005, 2008, 2012.

I would like to set the isolation level of the transaction created by the session, but I cannot find information about it.

This is my code.

   Session sess = factory.openSession();
   Transaction tx = null;
   try {
       tx = sess.beginTransaction();

       // do some work
       ...

       tx.commit();
   }
   catch (RuntimeException e) {
       if (tx != null) tx.rollback();
       throw e; // or display error message
   }
   finally {
       sess.close();
   }

I would like to do something like this

   sess.beginTransaction(1|2|4|8);

Is it possible?

Thanks.

+4
source share
1 answer

I just found one solution that worked for me

        if (forceReadCommitted) {

            this.session.doWork(new Work() {

                @Override
                public void execute(Connection connection) throws SQLException {

                    connection.setTransactionIsolation(2);
                }
            });
        }

but you may notice that this is for the whole connection, and not for a specific transaction. There may be better solutions.

+2
source

Source: https://habr.com/ru/post/1527555/


All Articles