It is safe remenber current Isolation level in AbstractJdbc2Connection?
От | Ader Javier |
---|---|
Тема | It is safe remenber current Isolation level in AbstractJdbc2Connection? |
Дата | |
Msg-id | 4BC144D3.4030808@gmail.com обсуждение исходный текст |
Ответы |
Re: It is safe remenber current Isolation level in
AbstractJdbc2Connection?
|
Список | pgsql-jdbc |
Hi and sorry by my English. I have a software that checks the Isolation level before create "every" PreparedStatement over a Connection (there is a pool of connections from we pick one). Some like this: if( connection.getTransactionIsolation() != Connection.TRANSACTION_READ_COMMITTED ) { connection.setTransactionIsolation( Connection.TRANSACTION_READ_COMMITTED ); } .... PreparedStatement stmt = connection.createPreparedStatement(....) return stmt; My problem is that AbstractJdbc2Connection.getTransactionIsolation() access the server ever and don't remember the last level used, so It's safe change getTransactionIsolation() and setTransactionIsolation(level) for avoid unnecessary access? That's my idea public abstract class AbstractJdbc2Connection implements BaseConnection { .... //cached Isolation level private Integer level = null; .... public int getTransactionIsolation() throws SQLException { checkClosed(); //new : avoid access if there is one previous if (this.level != null) return this.level.intValue(); .... .... level = level.toUpperCase(Locale.US); // mod: caching before return return if (level.indexOf("READ COMMITTED") != -1) this.level = new Integer(Connection.TRANSACTION_READ_COMMITTED); if (level.indexOf("READ UNCOMMITTED") != -1) this.level= new Integer(Connection.TRANSACTION_READ_UNCOMMITTED); if (level.indexOf("REPEATABLE READ") != -1) this.level = new Integer(Connection.TRANSACTION_REPEATABLE_READ) if (level.indexOf("SERIALIZABLE") != -1) this.level = new Integer(Connection.TRANSACTION_SERIALIZABLE); if (this.level != null) return this.level.valueInt(); this.level = new Integer(Connection.TRANSACTION_READ_COMMITTED); // Best guess return this.level.valueInt(); } public void setTransactionIsolation(int level) throws SQLException { ... //new: caching before return this.level = new Integer(level); } By the way, property "read only" is managed in this way (see AbstractJdbc2Connection.getReadOnly() and AbstractJdbc2Connection.setReadOnly(boolean). Thanks! Ader Javier
В списке pgsql-jdbc по дате отправления: