I'd have to say not only the manuals, but the big TP/database books stink on
this one. No where does it state that changes made within an ACID
transaction are visible within the transaction, and that ANSI isolation
levels effect other transactions. It implies this, but not clearly enough
for our friend.
Really, take our word for it, or try the program or SQL scripts I sent.
Otherwise give it a rest, we're not a bunch of yahoots.
Cheers
-----Original Message-----
From: Bill Burke
To: [EMAIL PROTECTED]
Sent: 6/15/01 7:49 PM
Subject: RE: [JBoss-dev] No storeEntity before ejbFind<METHOD>
Gina,
Why don't you bring up a SQL*PLUS window and try it yourself instead of
quoting Oracle manuals. My own experiments with SQL*PLUS and jdbc DO
NOT
verify your claims. BTW, I'm on Oracle 8.1.7. Maybe older versions
work
differently.
Bill
> -----Original Message-----
> From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED]]On Behalf Of
Gina
> Hagg
> Sent: Friday, June 15, 2001 5:53 PM
> To: [EMAIL PROTECTED]
> Subject: RE: [JBoss-dev] No storeEntity before ejbFind<METHOD>
>
>
> and, this is from the same page as before.
> http://technet.oracle.com/doc/server.815/a67781/c23cnsis.htm#2570
>
> Oracle Isolation Levels
>
> Oracle provides three transaction isolation levels:
>
> read committed
> This is the default transaction isolation level. Each
> query executed by a transaction sees only data that
> was committed before the query (not the transaction)
> began. An Oracle query will never read dirty
> (uncommitted) data.
> Because Oracle does not prevent other transactions
> from modifying the data read by a query, that data may
> be changed by other transactions between two
> executions of the query. Thus, a transaction that
> executes a given query twice may experience both
> nonrepeatable read and phantoms.
>
> serializable transactions
> Serializable transactions see only those changes that
> were committed at the time the transaction began, plus
> those changes made by the transaction itself through
> INSERT, UPDATE, and DELETE statements. Serializable
> transactions do not experience nonrepeatable reads or
> phantoms.
>
> read-only
> Read-only transactions see only those changes that
> were committed at the time the transaction began and
> do not allow INSERT, UPDATE, and DELETE statements.
>
> --- Jay Walters <[EMAIL PROTECTED]> wrote:
> > Well I am hoping I am just confused and have
> > misunderstood you.
> >
> > It appeared that you said JDBC connections and
> > Sql*plus ones were different,
> > and that a if I perform an insert inside a
> > transaction using JDBC that
> > within the same transaction I would not be able to
> > read the row inserted.
> >
> > If in fact you did say that there are two things
> > which are significant.
> > First, the server does not distinguish by client
> > type and both SQL*Plus and
> > JDBC drivers look essentially the same to it. They
> > both use the same wire
> > protocol to speak with the server.
> >
> > On the second issue, read committed has to do with
> > other transactions. Run
> > the embedded JDBC program... you might need to fix
> > up the connection URL.
> >
> > import java.sql.*; // JDBC classes
> > public class Foo {
> > public static void main( String[] args ) throws
> > SQLException {
> > // Get connection to the database
> > DriverManager.registerDriver( new
> > oracle.jdbc.driver.OracleDriver()
> > );
> > Connection con =
> > DriverManager.getConnection(
> > "jdbc:oracle:thin:@localhost:1521:ORCL", "scott",
> > "tiger" );
> >
> > /* Create the table */
> > Statement stmt = con.createStatement();
> > stmt.execute( "CREATE TABLE FOO ( X
> > VARCHAR2(32))" );
> >
> > con.setAutoCommit( false );
> > stmt.executeUpdate( "INSERT INTO FOO VALUES
> > ('Gina')" );
> >
> > /* Won't see Gina here! */
> > ResultSet rs = stmt.executeQuery( "SELECT X FROM
> > FOO" );
> > System.out.println( "Gina says see nothing" );
> > while( rs.next() ) {
> > System.out.println( "Oh oh, Found " +
> > rs.getString( 1 ));
> > }
> > rs.close();
> >
> > con.rollback();
> >
> > /* Won't see Gina here for sure! */
> > rs = stmt.executeQuery( "SELECT X FROM FOO" );
> > System.out.println( "Won't find anything here!" );
> > while( rs.next() ) {
> > System.out.println( "Found " + rs.getString( 1
> > ));
> > }
> >
> > /* All done, drop the table */
> > stmt.execute( "DROP TABLE FOO" );
> > }
> > }
> >
> > _______________________________________________
> > Jboss-development mailing list
> > [EMAIL PROTECTED]
> >
> http://lists.sourceforge.net/lists/listinfo/jboss-development
>
>
> __________________________________________________
> Do You Yahoo!?
> Spot the hottest trends in music, movies, and more.
> http://buzz.yahoo.com/
>
> _______________________________________________
> Jboss-development mailing list
> [EMAIL PROTECTED]
> http://lists.sourceforge.net/lists/listinfo/jboss-development
>
>
_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
http://lists.sourceforge.net/lists/listinfo/jboss-development
_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
http://lists.sourceforge.net/lists/listinfo/jboss-development