| |
Struts Tutorials:
Struts2 Tag CheckBoxList , Checkbox, Iterator, IF
Struts2 Tag Library Example
Struts2 Tiles Example
Struts2 Tiles I18N Example
Struts2 Questions
Struts Tiles I18N Example
Struts Eclipse MVC
Struts2 Tags
Struts2 Example and Tutorial
Struts MVC
Struts2 Validation
Hibernate Tutorials:
Hibernate Case Study
Class Hierarchy Persist Example
Using Hibernate Interceptor
Hibernate Questions with Answer
Hibernate Many-to-Many Mapping Example
Hibernate one-to-many Mapping Example
Hibernate and ORM tools
Spring Hibernate Example
Hibernate SessionFactory Example
Hibernate Mapping Class Hierarchy
Hibernate Questions
Hibernate SessionFactory Questions
Spring Hibernate Example:
Spring Hibernate Case Study
Written By : Amit
Title :
Java Object Identity
Description :
Article and Tutorial More...
|
Written By : guddu
Title :
Distributed Caching
Description :
For Java web application More...
|
Written By : Amit
Title :
Java IO Basics
Description :
Understanding Input Output Streams More...
|
Written By : Sameer
Title :
Java Comparator and compareTo
Description :
Question More...
|
Written By : Sameer
Title :
Apache ServiceMix
Description :
SOA and ESB More...
|
Written By : kkk_f17
Title :
Question on String in Java
Description :
How to improve performance More...
|
| Tags/Keywords : Transaction-Isolation-Levels - JDBC-Transaction - Your-Questions-on-Java Example Author : ISHTEK Date (Year/Month/Date): 2009-05-28
Question on JDBC Transaction Isolation Levels :
| |
Please be informed that NONE of the design/code from this
page is claiming to be some sort of best practices and we DO NOT expect
any of our visitor/reader of this page to assume this as some sort of
best practice for any context and should not be using this
as it is without appropriate evaluation to their, so to say,
specific programming context.
This page intends only to provide bit and piece of known ways for
doing some sort of example and may not be fit for any other purpose.
What are the JDBC Transaction isolation levels while using Database and
explain different types of reads resulting from these isolation levels?
To my understanding, Transaction comes into picture when there is a need
to allow many clients to access system concurrently, without really
bothering about data integrity and consistency, all or nothing behavior
and durable against server crash, power failure, or something that is
beyond controller or developer, system architect and or any stakeholder
to this system.
One question comes to my mind, if Transaction manages all these properties
as mentioned above, then what are isolation levels and what for these are
needed.
In case of multiple transactions running in server container or within
server transaction context/boundary, special care is to be taken on
database side as Database is a shared resource, across multiple
transactions.
So Isolation level is related to how transactions are isolated from data
store/database.
Before starting to discuss isolation levels, let us discuss possible facts
about a system where different threads working on same or different table
and rows within table.
Suppose we are dealing with two threads, T1 and T2 and both are trying to
work on a single row of a database table.
If T1, reads this row, and T2 either changes the same row, adds some more
rows, something similar to what T1 has already read or deleted the same row.
Then in this case how T1 will know what has happened to the data that it has
already fetched and probably would be working on.
Many possible cases will be as follows:
1. T1 reads a row, T2 changes the same row, now if T1 reads the same
row of table, it won't find the same data again. So is a kind of
no same data or no repeatable data.
2. T1 reads the data, that T2 has inserted into table but not yet committed.
Now T1 is working on this data, but somehow, data inserted by T2 got
roll backed. This way T1 is working on the data that now doesn't
existed in data store, isn't it dirty data avaliable with T1?
3. T1 reads some numbers of rows by some where clause in SQL statement,
but in the mean time T2 inserted some more records, and the condition
comes out to be same as that of T1 used to read initially.
If again T1 reads data with same where clause, and found many more rows,
those are something like phantom data to T1. So it can be phantom read.
So we have three types of reads discussed here as follows:
Dirty read
Non-repeatable read
Phantom read
Four types of isolation levels as follows:
TRANSACTION_READ_COMMITTED
In this case, all transactions read committed data only, so by using this
isolation level, dirty read can be stopped from occuring. As it cannot stop
other transactions from changing to adding rows, so non repeatable and
phantom reads can occur.
TRANSACTION_READ_UNCOMMITTED
As it is not committed, so all three types of reads can occur.
TRANSACTION_REPEATABLE_READ
In this isolation level, dirty and non repeatable reads cannot occur,
but phantom read can occur.
TRANSACTION_SERIALIZABLE
Transaction serializable type of Isoclation Level can stop all three types
of reads from occurring, but at the expense of performance, as at a time
only on transaction can have access to a table as one point of time.
This makes all other transactions to wait, so this is not good performance
oriented option. |
| Are you interested in solving a very interesting Technology Stack while Playing this Game 
|
|
| Home >>> Your Questions on Java >>> JDBC Transaction >>> Transaction Isolation Levels |
|
|
Visitor/User referred related external URL:
(Visible upon review and approved by this site Administrator)
|
|
|
|
|
<- requires login | Log in or Register | |
Copyright © 2008-2009, Interview-Questions-Tips-Forum, All Rights Reserved. | CONTACT PRIVACY POLICY DISCLAIMER |
 |
Terms of Use and Disclaimer :
This web site provides some of the information about various technologies, example
code, tips, tutorials etc. Like any printed materials, content of these pages may
become out of date over a period of time. Therefore all visitor/users of this web
site are requested/advised to refer to the originating parties/sources for the
latest changes and happenings for detailed information. This information is not
intended to be a substitute for the original reference provided by the originating
parties/sources.
By accessing and using this website in any ways, including, without
limitation, browsing the website pages, using any information, using any content and/or
downloading any materials, you agree to and are bound by the terms of use
described in this page and Usage Terms and Conditions.
If you do not agree to all of
the terms and conditions contained in the terms of use described in this
page and Usage Terms and Conditions, do not use this
website in any manner. If you are using the website on behalf of your
employer, you represent that you are authorized to accept these Terms of Use
on your employer's behalf.
All Trademarks are property of their respective owner. Appropriate measure is being
taken for providing accurate and up-to-date information but like any printed materials,
these blog(s)/contents may eventually be outdated one day, so if you are using any
of these information, please refer original content/documentation from respective sources.
And under no circumstances shall the Author of these contents and/or this web site
be liable for any loss, damage, expense incurred or suffered which is claimed to have
occurred because of usage of the contents of this web site.
If you have any questions/queries/feedback/suggestions then please write to this web
site owner at contact.
|  |
|
|
|
|
|